Я пытаюсь инициализировать карту STL, используя синтаксис С++ 11, но это, похоже, не работает. После инициализации, когда я пытаюсь получить доступ к элементу, он пытается вызвать частный конструктор Foo. Я что-то пропустил? Он работает, если я использую его. Мне интересно, могу ли я использовать оператор [] для доступа к инициализированным значениям...
#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;
}