在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();
}
但問題是關於在那裏的保證,這是對所有需要的初始化完成它由標準庫。
好點。改變了接受的答案,因爲仍然提供參考顯示了一個漏洞。 – 6502