До C++ 11 я часто использовал boost::bind
или boost::lambda
. Часть bind
превратила ее в стандартную библиотеку (std::bind
), другая часть стала частью основного языка (C++ lambdas) и значительно упростила использование lambdas. В настоящее время я почти не использую std::bind
, так как с лямбдами C++ я могу делать практически все. Есть один допустимый вариант использования std::bind
о котором я могу подумать:
struct foo
{
template < typename A, typename B >
void operator()(A a, B b)
{
cout << a << ' ' << b;
}
};
auto f = bind(foo(), _1, _2);
f( "test", 1.2f ); // will print "test 1.2"
C++ 14 эквивалент для этого будет
auto f = []( auto a, auto b ){ cout << a << ' ' << b; }
f( "test", 1.2f ); // will print "test 1.2"
Гораздо короче и лаконичнее. (В C++ 11 это еще не работает из-за автоматических параметров.) Есть ли другой допустимый вариант использования std::bind
превосходящий альтернативу C++ lambdas, или std::bind
излишен с C++ 14?