Dlaczego warto używać std :: bind ponad lambdami w C ++ 14?
Przed C ++ 11 użyłemboost::bind
lubboost::lambda
dużo. Thebind
część przeszła do standardowej biblioteki (std::bind
) druga część stała się częścią języka podstawowego (lambda C ++) i znacznie ułatwiła korzystanie z lambd. Obecnie prawie nie używamstd::bind
, ponieważ mogę zrobić prawie wszystko za pomocą lambd C ++. Jest jeden ważny przypadek użyciastd::bind
że mogę myśleć o:
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"
Odpowiednikiem tego byłby C ++ 14
auto f = []( auto a, auto b ){ cout << a << ' ' << b; }
f( "test", 1.2f ); // will print "test 1.2"
Znacznie krótszy i bardziej zwięzły. (W C ++ 11 nie działa to jeszcze z powodu parametrów automatycznych.) Czy istnieje inny ważny przypadek użyciastd::bind
pokonanie alternatywnych lub lambda C ++std::bind
zbędne w C ++ 14?