如果我编写这段代码
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 ‘{...}’
有些让我烦恼的是构造函数是在运行时执行的,理论上可能会失败。
当然,如果失败了,它会快速失败,并且应该始终如一地这样做,以便我能够快速定位和纠正问题。
但是,我还是很好奇 - 有没有办法在编译时初始化 map、vector 等?
编辑:我应该说我正在开发嵌入式系统。并非所有处理器都有 C++0x 编译器。最受欢迎的可能会有,但我不想遇到陷阱并且不得不维护两个版本的代码。
至于 Boost,我还没决定。他们对在嵌入式系统中使用他们的有限状态机类并不确定,而这正是我在这里编码的,事件/状态/Fsm 类。
唉,我想我最好还是保险点,但我希望这次讨论对其他人有所帮助。