2011-07-14 80 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