¿Cómo creo una función lambda utilizando boost o stl para que coincida con el parámetro boost::function
esperado por F
en el tercer fragmento de código en main
?¿Cómo creo una función lambda para que coincida con un parámetro boost :: function sin usar C++ 0x?
#include <iostream>
#include <boost/function.hpp>
void F(int a, boost::function<bool(int)> f) {
std::cout << "a = " << a << " f(a) = " << f(a) << std::endl;
}
bool G(int x) {
return x == 0;
}
int main(int arg, char** argv) {
// C++0x
F(123, [](int i) { return i==0; });
// Using seperate function
F(0, &G);
// How can I do it in place without C++0x
F(123, /* create a lambda here to match */);
}
No puedo usar C++ 0x y me gustaría evitar crear varias funciones separadas. Puedo usar algo diferente que boost::function
si eso ayuda, mi prioridad es crear el lambda de manera sucinta.
Me pregunto ... ¿cómo es que no puedes usar C++ 0x pero quieres usar 'std :: function' que es parte de C++ 0x? Por cierto, eche un vistazo a la biblioteca boost lambda, ya que podría ser lo que está buscando. –
@David: boost :: function not std :: function –