Comment utiliser les fonctions lambda avec boost::bind/std::bind dans VC++ 2010?

J'ai quelques lambda fonctions qui je veux lier à l'aide soit de boost::bind ou std::bind. (Ne faites pas attention, dont l'un, aussi longtemps que cela fonctionne.) Malheureusement, deux d'entre eux me donner compilateur différent des erreurs:

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>'

Alors, quelle est la solution la plus simple pour cela?

Pourquoi voulez-vous utiliser bind ? Ne pouvez-vous pas simplement appeler f() ou f2(1) ?
C'était juste un exemple simple, mais en réalité je veux stocker les lier résultat dans un objet de fonction.
Pourquoi voulez-vous utiliser bind ? Je pensais que C++0x fourni les bouchons ?

OriginalL'auteur Timo | 2011-01-05