分配给结构图的语法

nor*_*lli 7 c++ struct map initializer-list c++11

struct Structure {
//  Structure(const char* n, int v, bool a) : name(n), value(v), awesome(a) {}
  const char* name;
  int value;
  bool awesome;
};
std::map<const char*, Structure> map;
map["alpha"] = {"Alpha", 0, true};
map["beta"]  = {"Beta",  1, false};
map["gamma"] = {"Gamma", 2, true};
Run Code Online (Sandbox Code Playgroud)

G ++(4.6)在C++ 03中接受这种赋值语法,但抱怨'扩展初始化语法只能在C++ 0x中使用'(释义).我知道我可以创建一个按顺序接受值的构造函数,但我想知道这个语法是否可以接受(没有C++ 0x),或者G ++只是让我感到安慰,因为我对C +非常着急+ 0X.

使用clang ++进行编译甚至不允许它(带有C++ 0x,我假设缺少初始化列表),说"预期表达式",这基本上意味着"这到底是什么?",甚至在我使用时构造函数(上面已注释掉),它会抛出错误.

简介:基本上,使用的语法是什么,我可以使用初始化列表格式(在C++ 03或C++ 0x中)吗?

tem*_*def 5

通过使用新的统一初始化语法,上述代码仅在C++ 0x中合法.C++ 03将拒绝这一点.在此期间,为您定义构造函数是可行struct的方法.