Могу ли я использовать boost :: bind или библиотеку boost lambda для создания функтора, который игнорирует свои аргументы и всегда возвращает константу?
например функтор с эквивалентным поведением:
int returnThree( SomeType arg ) { return 3; }
Конечно, используйте
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
в качестве кода выхода.
Из комментария Барри к ответу Сихе:
#include "boost/lambda/lambda.hpp"
...
auto returnThree = boost::lambda::constant(3);