Boost logo

Boost :

Subject: [boost] Mp11 review
From: paul (pfultz2_at_[hidden])
Date: 2017-07-25 17:40:08


Hi, this is my review of mp11.

Please answer the following questions in your review [4]:

>  1. Should Mp11 be accepted into Boost? Please state all conditions
>     for acceptance explicity.

Yes Mp11 should be Accepted.

>
>  2. What is your evaluation of the design?

Very good design overall. I don't know if I really like the `mp_` prefix.
Trailing underscores is common in boost, but the mp prefix makes sense for
standardization.

It uses the `std::integral_constant`, but it might be nice to use another
implementation, as that can help make it consistent between C++11 and C++14.
Also, providing an integral constant with operators could help improve
interoperability with hana-style metaprogramming(which also help interoperate
with the Fit library as well). Of course, I don't know if mp11 is right place
for it. It seems it would be better to have a separate library for this and
the other C+14 features as well.

Also why is `mp_with_index` only constexpr on C++14 and higher?

>
>  3. What is your evaluation of the implementation?

The implementation seems to be good and provides competive performance with
other metaprogramming libraries, but I do wonder if some of Odin's
metaprogramming techniques(such as recursive aliases) can be used to improve
the performance as well.

>
>  4. What is your evaluation of the documentation?

Very well documented and organized.

>
>  5. What is your evaluation of the potential usefulness of the library?

I think this library can be very useful for C++11 metaprogramming where I have
needed. I don't think it would be as useful for the Fit and Tick library
because they still target gcc 4.6, which mp11 doesn't support due to being
based around template aliases. 

>
>  6. Did you try to use the library? With what compiler? Did you have
>     any problems?

Yes, I did, and also ran the tests. I tried to run the tests on some
configurations that aren't ran in the travis CI(like clang 3.5 with C++14).
And all the tests do pass.

>
>  7. How much effort did you put into your evaluation? A glance? A quick
>     reading? In-depth study?

I spent a couple hours reviewing, and I have implement ad-hoc versions of
these in my own libraries as well.

Paul


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk