Vicente J. Botet Escriba wrote:
You know what I mean. is_same<_1,V> should be a meta-function class.
I didn't, not because I'm being deliberately obtuse, but because different metaprogramming libraries have taken different approaches to what constitutes a metafunction class. What they have in common is that they take metafunction classes (instead of template aliases as mp11 does) which they then evaluate internally with their eval/invoke primitive, but how invoke handles placeholders differs from library to library.
BTW, mp_quote does more than quoting. It is doing some binding.
Originally it did just quote, then I noticed that the extension to partial application (bind_front) is straightforward. In the simple case mp_quote<F> it still quotes.
BTW I'm missing how we build a mp set.
Usually you start with an empty mp_list<> and mp_set_push_back things into it; the other case is when you have an existing list L and convert it to a set with mp_unique<L>.