2011-07-14 36 views
3

C++ 0x中的原子变量可以全局初始化吗?在C++中初始化原子变量0x

例如,

atomic_int turnX = 5; 
int main(){ 
    .... 
} 

失败, 错误:删除功能“的std ::原子::原子(常量的std ::原子&)”

看着atomic_2.h确实给一个想法,这是不允许的。我是否正确地声明只能从函数中为原子变量赋值?

回答

6

尝试:

atomic_int turnX(5); 

这是一个constexpr构造函数,因此它应该被构造为恒定初始化(即,在负荷时间)。

+0

但为什么'atomic_int turnX = 5;'不调用该构造函数?标准中的任何引号? – smerlin

+0

@smerlin:我想象因为它使用了复制初始化。可能发生的事情是'5'被隐式转换为'atomic_int',然后'turnX'由非'constexpr'对象复制构建。 – 2011-07-18 00:22:13