Синтаксис при назначении карте структур

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

7
задан templatetypedef 10 August 2011 в 08:03
поделиться