C++11 構文を使用して STL マップを初期化しようとしていますが、うまくいかないようです。初期化後、要素にアクセスしようとすると、Foo のプライベート コンストラクターを呼び出そうとします。私は何か見落としてますか?at を使えばうまくいきます。operator[] を使用して初期化された値にアクセスできるかどうか疑問に思っています...
#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;
}