Subject: Re: [boost] About all these metaprogramming libraries
From: Edouard (edouard_at_[hidden])
Date: 2017-03-18 21:40:39
>We've seen two metaprogramming libraries ask for a formal review on the list recently. I expect a third (Brigand) might join the party soon, and maybe even a fourth (Eric Niebler's meta). I think it would be wise to have a plan for how we're going to deal with this.
I am one of the authors of Brigand (https://github.com/edouarda/brigand), and it's true we're considering submitting it. This is upon request by Boost library authors who would like to use Brigand to reduce the compilation time of their libraries. If the submission is deemed inappropriate or useless it will not happen.
>Hence, I think Boost does need a modern classic TMP library to handle these cases where a library writer needs to handle gigantic type lists. I think marketing such a library as an advanced tool for library writers would be a service to the overall C++ community, but that's an orthogonal concern.
I agree with you. I also think that just patching Boost.MPL to make it leverage C++ 11 will not be sufficient. That's how Brigand got started and very quickly we realized we were at a dead end. Then I read Peter Dimov's article and realized there was a better way. :-)
>However, Boost needs one such library, not four. I think we can't just do 4 reviews and include all the libraries that pass in Boost; that would be a huge disservice to our users, who will be left with the burden of choosing.
>Heck, if we can't even make our mind, how can they?
I'm afraid the main produce of 4 reviews might be an extraordinary amount of bike shedding.
>So, how do we pick? Have we ever been in a similar situation where we have multiple competing libraries solving _exactly_ the same problem?
Does a decision need to be taken urgently? The aforementioned libraries are currently available and ready to be used. To me, the inclusion into Boost is more about the process than the inclusion itself. The process will raise questions and issues and shed some light on unsuspected usage scenarii.
At CppCon we discussed if the language and the standard library needed improvements to make TMP even more useful, convenient and faster.
I submit discussing what kind of TMP library should be added to Boost will be very beneficial.