【发布时间】:2017-06-18 08:24:14
【问题描述】:
在 C++ 中,静态存储持续时间对象以未指定的顺序初始化(在同一编译单元中除外)。
代码如下:
#include <iostream>
struct Foo {
Foo() {
std::cout << "Hello, world.\n";
}
} foo_instance;
int main(int argc, const char *argv[]) {
return 0;
}
在foo_instance 的初始化过程中我已经可以使用std::cout 的标准中说明了哪里?
我知道我可以通过在 <iostream> 中添加一些技巧来确保一切正常,例如让它包含类似的内容
int __ensure_stdout_initialization_call();
namespace {
int __ensure_stdout_initialization
= __ensure_stdout_initialization_call();
}
然而,问题是在哪里可以保证标准库所需的所有初始化都完成了。
【问题讨论】:
标签: c++ initialization language-lawyer iostream