| Front Page / Metafunctions / Composition and Argument Binding / lambda | 
template<
      typename X
    , typename Tag = unspecified
    >
struct lambda
{
    typedef unspecified type;
};
If X is a Placeholder Expression, transforms X into a corresponding Metafunction Class, otherwise X is returned unchanged.
#include <boost/mpl/lambda.hpp>
| Parameter | Requirement | Description | 
|---|---|---|
| X | Any type | An expression to transform. | 
| Tag | Any type | A tag determining transform semantics. | 
For arbitrary types x and tag:
typedef lambda<x>::type f;
| Return type: | |
|---|---|
| Semantics: | If x is a Placeholder Expression in a general form X<a1,...an>, where X is a class template and a1,... an are arbitrary types, equivalent to typedef protect< bind< quoten<X> , lambda<a1>::type,... lambda<an>::type > > f; otherwise, f is identical to x. | 
typedef lambda<x,tag>::type f;
| Return type: | |
|---|---|
| Semantics: | If x is a Placeholder Expression in a general form X<a1,...an>, where X is a class template and a1,... an are arbitrary types, equivalent to typedef protect< bind< quoten<X,tag> , lambda<a1,tag>::type,... lambda<an,tag>::type > > f; otherwise, f is identical to x. | 
template< typename N1, typename N2 > struct int_plus
    : int_<( N1::value + N2::value )>
{
};
typedef lambda< int_plus<_1, int_<42> > >::type f1;
typedef bind< quote2<int_plus>, _1, int_<42> > f2;
typedef f1::apply<42>::type r1;
typedef f2::apply<42>::type r2;
BOOST_MPL_ASSERT_RELATION( r1::value, ==, 84 );
BOOST_MPL_ASSERT_RELATION( r2::value, ==, 84 );