2011-07-14 12 views
3

C++ 0xのアトミック変数はグローバルに初期化できますか?C++でのアトミック変数の初期化0x

これが許可されていないという考えを与えるん削除された関数「のstd ::原子::原子(のconstのstd :: &アトミック」)

atomic_2.hを見て:

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

は エラーで失敗します。原子変数に関数内からのみ値を割り当てることができるという声明を作成するのは正しいですか?

答えて

6

試み:

atomic_int turnX(5); 

それは一定の初期化(すなわち負荷時)のように構成されなければならないので、これは、constexprのコンストラクタです。

+0

なぜ、 'atomic_int turnX = 5;'がそのコンストラクタを呼び出さないのでしょうか?標準からの引用はありますか? – smerlin

+0

@smerlin:コピー初期化を使用しているためだと思います。起こっていることは、 '5'が暗黙的に' atomic_int'に変換され、 'turnX'が非'constexpr'オブジェクトからコピーコンストラクトされていることです。 –