¿Por qué usar std :: bind sobre lambdas en C ++ 14?
Antes de C ++ 11 utilicéboost::bind
oboost::lambda
mucho. losbind
parte en la biblioteca estándar (std::bind
) la otra parte se convirtió en parte del lenguaje central (C ++ lambdas) y facilitó mucho el uso de las lambdas. Hoy en día, casi no usostd::bind
, ya que puedo hacer casi cualquier cosa con las lambdas de C ++. Hay un caso de uso válido parastd::bind
que se me ocurre
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"
El equivalente de C ++ 14 para eso sería
auto f = []( auto a, auto b ){ cout << a << ' ' << b; }
f( "test", 1.2f ); // will print "test 1.2"
Mucho más corto y conciso. (En C ++ 11, esto todavía no funciona debido a los parámetros automáticos). ¿Hay algún otro caso de uso válido parastd::bind
superando a la alternativa lambdas de C ++ o esstd::bind
¿Superfluo con C ++ 14?