Here is my review of MP11.
1. Should Mp11 be accepted into Boost? Please state all conditions for acceptance explicity.
Yes I think it should be accepted. There are changes I would like to see to the documentation. I don’t regard those as setting a condition on acceptance.
2. What is your evaluation of the design?
I like the design which is consistent and clear. I have found it easy to understand.
3. What is your evaluation of the implementation?
The implementation is also clear and consistent. I have found it easy to understand and to develop extensions to cover cases not in the implementation.
4. What is your evaluation of the documentation?
I have had some problems with the documentation. Some of these came up when I attempted to use the examples and found that not all of the example code was C++11 compatible. I found ways around this and I believe that this has now been sorted out.
Some items e.g. mp_identity_t<T> and mp_inherit which have many uses to simplify the implementation of type deduction, particularly of return types from functions. This is an area which has not been discussed much in the course of the review.
6. Did you try to use the library? With what compiler? Did you have
any problems?
I have used the library mainly with Clang 4.0 and also with gcc 4.9.2 working on Linux.
My initial problems were getting some examples to work with C++11. This is mainly the extra things which are in std for C++14. I overcame these in most cases using mp_quote_trait<F> which gave code which works with C++11 and C++14.
I have gone on to reimplement some code which does fairly complicated operations to get return types. I used mp_quote_trait<F> and mp_invoke
and removed all of the ::type code from my new code.
I have also written extensions to mp_quote_trait to allow for the case where the inner function is of the form F
> {
typedef mp_invoke_N
type;
};
using mp_q_inside_N_t = mp_quote_trait