これはしばしば尋ねられる質問ですが、非常に多くの亜種があるので、私はそれを再述べたいと思います。何かのようなもの
Logger& g_logger() {
static Logger lg;
return lg;
}
変数lgのコンストラクタは一度だけ実行することが保証されていますか?
私は以前の答えから、C ++ 03ではこれがそうではないことを知っています。 C ++
0xドラフトでは、これが強制されます。しかし、私はより明確な答えを望んでいます
- C ++ 11標準(ドラフトではない)では、スレッドセーフな初期化動作が終了しましたか?
- 上記がyesの場合、最新のgcc 4.7、vc 2011、clang
3.0の最新のリリースでは、それらが正しく実装されていますか?