標題頁 / 元函數 / 調用 / apply

apply

摘要

template< 
typename F
>
struct apply0
{
typedef unspecified type;
};

template<
typename F, typename A1
>
struct apply1
{
typedef unspecified type;
};

... template< typename F, typename A1,... typename An
>
struct applyn { typedef unspecified type;
};

template<
typename F
, typename A1 = unspecified ... , typename An = unspecified > struct apply { typedef unspecified type;
};

描述

以參數 A1,... An 調用 元函數類Lambda 表達式 F.

頭文件

#include <boost/mpl/apply.hpp>

參數

參數 要求 描述
F Lambda 表達式 調用的表達式
A1,... An 任意類型 調用參數

表達式語義

對於任意 Lambda 表達式 f 和任意類型 a1,... an:

typedef applyn<f,a1,...an>::type t;
typedef apply<f,a1,...an>::type t;
返回類型: 任意類型
語義: 等價於 typedef apply_wrapn< lambda<f>::type,a1,... an>::type t;.

例子

template< typename N1, typename N2 > struct int_plus
: int_<( N1::value + N2::value )>
{
};

typedef apply< int_plus<_1,_2>, int_<2>, int_<3> >::type r1;
typedef apply< quote2<int_plus>, int_<2>, int_<3> >::type r2;

BOOST_MPL_ASSERT_RELATION( r1::value, ==, 5 );
BOOST_MPL_ASSERT_RELATION( r2::value, ==, 5 );

參見

元函數, apply_wrap, lambda, quote, bind