Ich habe einige Lambda-Funktionen, die ich entweder mit boost :: bind oder std :: bind binden möchte. (Unbeachtlich, die man, solange es funktioniert.) Beide von ihnen leider verschiedene Compiler erros geben Sie mir:Wie verwendet man Lambda-Funktionen mit boost :: bind/std :: bind in 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>'
Also, was ist die einfachste Abhilfe für dieses?
Warum möchten Sie binden? Kannst du nicht einfach f() oder f2 (1) anrufen? – Jagannath
@Jagannath: Das war natürlich nur ein einfaches Beispiel, aber in Wirklichkeit möchte ich das Bindungsergebnis in ein Funktionsobjekt speichern. – Timo
Warum möchten Sie binden? Ich dachte C++ 0x zur Verfügung gestellt Schließungen? –