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?

questionAnswers(6)

yourAnswerToTheQuestion