Summary
A metafunction class is a certain form of metafunction representation
that enables higher-order metaprogramming. More precisely, it's a class
with a publicly-accessible nested Metafunction called apply.
Correspondingly, a metafunction class invocation is defined as invocation
of its nested apply metafunction.
typedef f::apply::type x;
Precondition: | f is a nullary Metafunction Class; f::apply::type is a type-name. |
Semantics: | x is the result of the metafunction class invocation. |
typedef f::apply<>::type x;
Precondition: | f is a nullary Metafunction Class; f::apply<>::type is a type-name. |
Semantics: | x is the result of the metafunction class invocation. |
typedef f::apply<a1,...an>::type x;
Precondition: | f is an n-ary metafunction class; apply is a Metafunction. |
Semantics: | x is the result of the metafunction class
invocation with the actual arguments a1,... an. |