我知道这是一个经常被问到的问题,但由于有太多的变体,我想重新陈述它,并希望有一个反映当前状态的答案。类似的
Logger& g_logger() {
static Logger lg;
return lg;
}
变量lg的构造函数保证只运行一次吗?
我从之前的回答中知道,在c++ 03中,这不是;在c++ 0x草案中,这是强制的。但我想要一个更明确的答案
在c++ 11标准(不是草案)中,线程安全的初始化行为最终确定了吗? 如果以上是肯定的,那么在目前流行的编译器的最新版本,即gcc 4.7, vc 2011和clang 3.0中,它们是否正确地实现了?