boost bind或lambda functor返回一个常量

时间:2014-10-28 15:02:08

标签: c++ boost boost-bind boost-lambda

我可以使用boost :: bind或boost lambda库来创建一个忽略其参数并始终返回常量的仿函数吗?

e.g。一个具有相同行为的仿函数:

int returnThree( SomeType arg ) { return 3; }

2 个答案:

答案 0 :(得分:2)

当然,请使用

boost::phoenix::val(3);

查看 Live On Coliru

#include <boost/phoenix.hpp>

namespace p = boost::phoenix;
using namespace p::arg_names;

int main()
{
    auto p = p::val(42);
    return p() + p(/*ignored:*/77);
}

返回84作为exitcode。

答案 1 :(得分:1)

来自Barry对sehe的答案的评论:

#include "boost/lambda/lambda.hpp"

...

auto returnThree = boost::lambda::constant(3);