我们无法确定静态对象初始化的顺序。
但是在以下示例中是否存在问题?
- 一个静态变量是映射(或其他容器)
- 从另一个静态变量,我们填充该映射
代码:
class Factory
{
public:
static bool Register(name, func);
private:
static map<string, func> s_map;
};
// in cpp file
map<string, func> Factory::s_map;
bool Factory::Register(name, func)
{
s_map[name] = func;
}
并且在另一个cpp文件中
static bool registered = Factory::Register("myType", MyTypeCreate);
当我注册更多类型时,我不依赖于容器中的顺序。但是对于容器中的第一个添加呢?我能确定它已经被“足够”初始化以接受第一个元素吗?
或者这是“静态初始化顺序惨败”的另一个问题吗?