我一直在尋找一個MPL類,它將從一個性能足夠好的MPL元函數類中創建一個函數對象。我手卷此實現:從MPL元函數類創建一個函子
template <class Lambda, class Result>
struct functor
{
typedef Result result_type;
template <typename Type>
Result operator()(Type)
{ return Lambda::template apply<Result>::type::value; }
};
的利用方法是
Foo foo;
return functor< boost::mpl::always<boost::mpl::int_<5> >, int >(foo);
爲寫return 5
的榮耀版本。
由於這個操作看起來很基本,我以爲MPL中已經有了類似的類,但是對文檔的搜索並沒有給我帶來任何幫助。我錯過了什麼嗎?
在閱讀澄清意見,增強融合可能是你在找什麼。它是這樣做的:融合了元運算和運行時編程(注意Fusion帶有它自己的序列(和派生)概念。但是,MPL序列僅適用於 – sehe