C++11有规定static/global个变量的构造顺序吗?

Does C++11 specify the construction sequence of static/global variables?

在C++98/03中,静态对象的构造(在文件中,在类中,在函数中)没有指定的顺序,一个静态对象不能假设它是在另一个静态对象之后或之前构造的, 似乎是由链接器决定的。

我的问题是,C++ 11/14对静态对象和全局对象的构造顺序有规定吗?

规则没有改变。然而,所有 global/static 对象都是按照它们在翻译单元中出现的顺序构造的。只是未指定多个翻译单元的初始化顺序。

请注意,函数局部静态对象是以特定方式构造的。它们是在第一次到达它们的声明时构造的,并且一直存在到程序结束。此行为在 C++11 中已更改,尽管在 C++11 之前初始化不是线程安全的,而 C++11 及更高版本指定静态初始化将是线程安全的。

是:全局对象将在编译单元内按顺序构建。 Ando No:C++11/14 没有改变。