Supongamos que tengo una función que toma algún tipo de predicado:Usando impulso para crear una función lambda que siempre devuelve verdadero
void Foo(boost::function<bool(int,int,int)> predicate);
Si quiero llamarlo con un predicado que siempre devuelve verdadero, puedo definir una función auxiliar:
bool AlwaysTrue(int, int, int) { return true; }
...
Foo(boost::bind(AlwaysTrue));
Pero hay alguna forma de llamar a esta función (posiblemente usando boost :: lambda) sin tener que definir una función separada?
[Editar: se olvidó de decir: no puedo usar C++ 0x]
He estado echándole un vistazo y descubrí boost :: lambda :: identity ... ¿alguien sabe la diferencia? Ambos parecen funcionar. – stusmith
identidad parece ser una clase de plantilla no documentada, utilizada en la implementación de constante (y boost :: lambda :: var). Al igual que std :: mem_fun_t es la clase que la función auxiliar std :: mem_fun crea y devuelve, excepto que mem_fun_t está documentado y la identidad no. Dado eso, recomendaría usar var y constante en su lugar. – SCFrench