標題頁 / 元函數 / 合成與參數綁定 / lambda

lambda

摘要

template< 
typename X
, typename Tag = unspecified > struct lambda { typedef unspecified type;
};

描述

如果 X 是一個 佔位符表達式,則將 X 轉化為對應的 元函數類,否則返回 X.

頭文件

#include <boost/mpl/lambda.hpp>

參數

參數 要求 描述
X 任意類型 被轉化的表達式
Tag 任意類型 決定轉化語義的 tag

表達式語義

對於任意類型 xtag:

typedef lambda<x>::type f;
返回類型: 元函數類
語義:

如果 x 是一個形如  X<a1,...an>佔位符表達式,其中 X 是一個類模板而 a1,... an 為任意類型,則等價於

typedef protect< bind<
quoten<X>
, lambda<a1>::type,... lambda<an>::type
> > f;

否則,f 等同於 x.

typedef lambda<x,tag>::type f;
返回類型: 元函數類
語義:

如果 x 是一個形如  X<a1,...an>佔位符表達式,其中 X 是一個類模板而 a1,... an 為任意類型,則等價於

typedef protect< bind<
quoten<X,tag>
, lambda<a1,tag>::type,... lambda<an,tag>::type
> > f;

否則,f 等同於 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 );

參見

合成與參數綁定, 調用, 佔位符, bind, quote, protect, apply