|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2006-07-25 10:59:59
"David Bergman" <David.Bergman_at_[hidden]> writes:
> Aleksey Gurtovoy wrote:
>
>> Joaquín López Muñoz writes:
>> > 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?
>>
>> Nope, you are 100% correct.
>
> Ok, so
>
> struct Map { template<typename T> struct apply { typedef int type;
> }; };
>
> is a "lambda expression" then?
No but,
Map
is a lambda expression.
> A bit weird in my book, but if that is the
> official nomenclature for MPL, I will use it...
>
> By the way, Aleksey, what do you think of calling anything applicable via
> mpl::apply a "metafunctor"?
That's exactly a "lambda expression;" there's no need for a new term.
The documentation for apply which says "Invokes a Metafunction Class
or a Lambda Expression F with arguments A1,... An." is just redundant
and should probably be fixed.
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk