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) ?