
Bjorn Reese wrote:
Apropos mp_transform, would it be possible to extend it such that we can pass a type-trait directly to it? For example:
using const_list = mp_transform<std::add_const, typelist>;
instead of using std::add_const_t. The reason I ask is that I have lots of my own domain-specific type-traits that does not come with a _t version, so this is mainly for convenience.
That's unfortunately not possible because mp_transform<std::add_const, mp_list<int, float>> is perfectly valid and yields mp_list<add_const<int>, add_const<float>>. I can add template<template<class...> class T> struct mp_quote_trait { template<class... U> using invoke = typename T<U...>::type; }; that would allow mp_transform<mp_quote_trait<std::add_const>::invoke, L> but that's not much of an improvement. _t is the way to go with mp11.
The reference documentation is a bit terse and obscure.
That it is. I'm gradually improving it bit by bit when I find time to work on it.