2014-10-28 3 views
2

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

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

int returnThree(SomeType arg) { return 3; } 

ответ

1

Из комментария Барри на ответ sehe в:

#include "boost/lambda/lambda.hpp" 

... 

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

Sure, используйте

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

Даже дает вам до 10 аргументов, в то время как 'повышение :: лямбда :: constant' ограничивает вас 3. – Barry

 Смежные вопросы

  • Нет связанных вопросов^_^