std::bind de fonction membre de classe

J'ai ce code:

#include <iostream>
#include <functional>

struct Foo
{
        int get(int n) { return 5+n; }
};

int main()
{
        Foo foo;
        auto L = std::bind(&Foo::get, &foo, 3);

        std::cout << L() << std::endl;

        return 0;
}

Semble que cela:

auto L = std::bind(&Foo::get, &foo, 3);

est equivalento:

auto L = std::bind(&Foo::get, foo, 3);

Pourquoi?

Il n'est pas. On se lie à un pointeur, l'autre se lie à un copier.
Pour ce que ça vaut, vous pouvez également passer un pointeur intelligent (tout type qui implémente operator-> retour d'un foo*) comme deuxième argument. Essayez avec un std::shared_ptr.
dupliquer:stackoverflow.com/questions/15264003/... Bien que j'aime les deux réponses...

OriginalL'auteur Gian Lorenzo Meocci | 2013-04-15