Если я кодирую это
std::map<int, char> example = {
(1, 'a'),
(2, 'b'),
(3, 'c')
};
, тогда g ++ говорит мне
deducing from brace-enclosed initializer list requires #include <initializer_list>
in C++98 ‘example’ must be initialized by constructor, not by ‘{...}’
, и это меня немного раздражает, потому что конструктор выполняется во время выполнения и может теоретически потерпеть неудачу.
Конечно, если это произойдет, он быстро потерпит неудачу и должен делать это последовательно, так что я должен быстро найти и исправить проблему.
Но, тем не менее, мне любопытно - этов любом случае инициализировать карту, вектор и т. д. во время компиляции?
Редактировать: я должен был сказать, что я разрабатываю для встраиваемых систем.Не все процессоры будут иметь компилятор C ++ 0x.Наиболее популярным, вероятно, будет, но я не хочу сталкиваться с проблемой и должен поддерживать 2 версии кода.
Что касается Boost, я не определился.Они беззаботно относятся к использованию своих классов Finite State Machine во встроенных системах, так что это именно то, что я здесь кодирую, классы Event / State / Fsm.
Вздох, наверное, мне лучше просто обойтись безопасным, но я надеюсь, что эта дискуссия была полезна для других.