Boost Bind или лямбда-функтор, который возвращает константу

Могу ли я использовать boost :: bind или библиотеку boost lambda для создания функтора, который игнорирует свои аргументы и всегда возвращает константу?

например функтор с эквивалентным поведением:

int returnThree( SomeType arg ) { return 3; }

2

Решение

Конечно, используйте

boost::phoenix::val(3);

Видеть это Жить на Колиру

#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 в качестве кода выхода.

2

Другие решения

Из комментария Барри к ответу Сихе:

#include "boost/lambda/lambda.hpp"
...

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

По вопросам рекламы [email protected]