【发布时间】:2011-11-23 13:55:41
【问题描述】:
我一直在寻找 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 中已经有一个类似的类,但是搜索文档并没有为我找到任何东西。我错过了什么吗?
【问题讨论】:
-
在阅读澄清的 cmets 后,Boost Fusion 可能就是您所寻找的。它做到了这一点:元和运行时编程的融合(请注意,Fusion 带有它自己的序列(和派生)概念。但是,MPL 序列被改编