2

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

例如,具有与以下行为等效的函子:

int returnThree( SomeType arg ) { return 3; }
4

2 回答 2

2

当然,使用

boost::phoenix::val(3);

在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

于 2014-10-28T15:09:33.820 回答
1

来自巴里对 sehe 回答的评论:

#include "boost/lambda/lambda.hpp"

...

auto returnThree = boost::lambda::constant(3);
于 2014-10-28T15:45:15.310 回答