
----- Mensaje original ----- De: David Bergman <David.Bergman@bergmangupta.com> Fecha: Lunes, Julio 24, 2006 7:33 pm Asunto: [boost] [mpl] Metafunction terminology - revival?
Ok, I don't know what happened to the old discussion about naming of stuff that can be safely applied by mpl::apply.
We have the following constructs:
1. "metafunctions," which are templates classes with a type identifier called 'type',
2. "metafunction classes," which are classes with a nested template class called 'apply', which is a "metafunction" in its own right, and
3. "lambda expression."
Two of them - #2 and #3 - share a quite important trait: they can be passed as the first argument to mpl::apply.
I suggest that we call anything applicable via mpl::apply a "metafunctor."And have "metafunctoid" denote that category extended with #1 - ordinary metafunctions - above.
It is a bit boring not to be able to use a common name for these constructs,especially when trying to tech others about metaprogramming techniques in C++. And I do not see such common names in the MPL documentation (or book.)
Hello David, Please correct if I'm wrong, but I'd say the official definition for a MPL lambda expression: http://boost.org/libs/mpl/doc/refmanual/lambda-expression.html actually encompasses both metafunction classes and placeholder expressions ("proper" lambda expressions, if you wish), so "lambda expression" is the common name you're after. Am I missing something? (I've got the hunch I am, actually.) Joaquín M López Muñoz Telefónica, Investigación y Desarrollo