Tengo algunas funciones lambda que quiero vincular usando boost :: bind o std :: bind. (No importa cuál, siempre y cuando funciona.) Desafortunadamente ambos me dan diferentes erros del compilador:Cómo usar las funciones de lambda con boost :: bind/std :: bind en VC++ 2010?
auto f = [](){ cout<<"f()"<<endl; };
auto f2 = [](int x){ cout<<"f2() x="<<x<<endl; };
std::bind(f)(); //ok
std::bind(f2, 13)(); //error C2903: 'result' : symbol is neither a class template nor a function template
boost::bind(f)(); //error C2039: 'result_type' : is not a member of '`anonymous-namespace'::<lambda0>'
boost::bind(f2, 13)(); //error C2039: 'result_type' : is not a member of '`anonymous-namespace'::<lambda1>'
Así que, ¿cuál es la solución más simple para esto?
¿Por qué quieres usar bind? ¿No puedes simplemente llamar a f() o f2 (1)? – Jagannath
@Jagannath: Esto fue, por supuesto, solo un ejemplo simple, pero en realidad quiero almacenar el resultado del enlace en un objeto de función. – Timo
¿Por qué quieres usar bind? Pensé que C++ 0x proporcionaba cierres? –