C++11 initialiser la carte

Je suis en train d'initialiser un STL carte à l'aide de C++11 de la syntaxe, mais qui ne semble pas fonctionner. Après l'initialisation, lorsque j'essaie d'accéder à l'élément, il tente d'appeler le constructeur privé de Foo. Ai-je raté quelque chose? Il fonctionne si j'utilise. Je me demandais si je pouvais utiliser l'opérateur[] pour accéder à la initialisé valeurs...

#include <map>
#include <string>

class Foo{
public:
    int a, b;
    Foo(int a_, int b_){
        a = a_;
        b = b_;
    }

private:
    Foo(){};
};


int main(){

    std::map<std::string, Foo> myMap = { {"1", Foo(10,5)}, {"2", Foo(5,10)} };
    int b  = myMap["1"].b;    //it tries to call private constructor of Foo.
    return 0;
}

OriginalL'auteur Negative Zero | 2012-06-07