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};
G ++(4.6)接受这种在C ++ 03中赋值的语法,但抱怨'扩展初始化语法只能在C ++ 0x中使用'(释义)。我知道我可以创建一个按顺序接受值的构造函数,但我想知道这个语法是否可以接受(没有C ++ 0x),或者G ++只是让我感到安慰,因为我对C +非常着急+ 0X。
使用clang ++进行编译甚至不允许它(带有C ++ 0x,我假设缺少初始化列表),说'期望表达',这基本上意味着“这到底是什么?”,甚至当我使用构造函数(上面注释掉)时,它会抛出错误。
摘要:基本上,使用的语法是什么,我可以使用初始化列表格式(在C ++ 03或C ++ 0x中)吗?
答案 0 :(得分:5)
通过使用新的统一初始化语法,上述代码仅在C ++ 0x中合法。 C ++ 03将拒绝这一点。在此期间,为struct
定义构造函数是可行的方法。