bind2nd
Sintaxis:
template <typename Functor, typename T> binder2nd<Functor> bind2nd (const Functor& f, const T& v); '' bind1st está similarmente definida
- f es un functor que toma dos parámetros; idealmente debe heredar de binary_function.
bind2nd es una función definida en la cabecera <functional> que crea un functoide unario a partir de un functoide binario, de tal manera que el functoide creado invoca al functoide binario manteniendo su segundo argumento en el valor fijo v. En otras palabras, dado un functoide binario f, la invocación bind2nd(f, v) crea un functoide unario g tal que:
g (x) → f (x,v)
El tipo retornado por la función es el tipo de functoide binder2nd<Functor> donde Functor es el tipo del functoide.
La función está diseñada para ser invocada pasando el functoide resultado a una función o algoritmo directamente, sin necesidad de declarar explícitamente una variable y su tipo. En el futuro estándar C++11, será posible declarar automáticamente una variable functoide gracias a la palabra clave auto:
auto functoide = bind2nd (less<double>(), M_PI); '' functoide:= double → bool .... q = functoide(0); '' equivale a less<double>()(0, M_PI) --> (0 < M_PI) ; retorna true q = functoide(10); '' equivale a less<double>()(10, M_PI) --> (10 < M_PI) ; retorna false
[editar] Ejemplo
| This section is incomplete |
[editar] Detalles
En el próximo estándar de C++, "C++11", tanto bind1st como bind2nd serán deshauciados a favor del constructor genérico std::bind:
auto fa1 = std::bind (less<int>(), 1, _1); '' bind1st: invoca a less<int>()(1, x) --> (1 < x) auto fa2 = std::bind (greater<int>(), _1, -1); '' bind2nd: invoca a greater<int>(y, -1) --> (y > -1)
[editar] Tópicos Relacionados
- bind1st -- fija el segundo parámetro de un functoide