ATOMIC_FLAG_INIT
From cppreference.com
| ヘッダー <atomic> で定義 |
||
| #define ATOMIC_FLAG_INIT /* 実装定義 */ |
(C++11以降) | |
std::atomic_flag をクリア (false) 状態に初期化するために使用できる初期化子を、std::atomic_flag v = ATOMIC_FLAG_INIT; の形式で定義します。他の初期化コンテキストで使用できるかどうかは未規定です。
フラグが 完全なオブジェクト で 静的記憶域期間 を持つ場合、この 初期化は静的 です。
|
std::atomic_flag を確実な値に初期化する唯一の方法です。他のいかなる初期化の後にも保持される値は未規定です。 |
(C++20まで) |
|
このマクロは、std::atomic_flag のデフォルトコンストラクタがクリア状態に初期化するため、もはや必要ありません。C との互換性のために保持されています。 |
(C++20以降) |
[編集] 例
このコードを実行
#include <atomic> std::atomic_flag static_flag = ATOMIC_FLAG_INIT; // static initialization, // guaranteed to be available during dynamic initialization of static objects. int main() { std::atomic_flag automatic_flag = ATOMIC_FLAG_INIT; // guaranteed to work // std::atomic_flag another_flag(ATOMIC_FLAG_INIT); // unspecified }
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2159 | C++11 | ATOMIC_FLAG_INIT が他の初期化コンテキストで使用できるかどうかは不明でした |
他の使用法は 保証されていません |
| LWG 3659 | C++20 | ATOMIC_FLAG_INIT は非推奨でしたが、一部のプラットフォームの C では必要でした |
非推奨は解除されました |
[編集] 関連項目
| (C++11) |
ロックフリーなブール型アトミック型 (クラス) |
| C のドキュメント (ATOMIC_FLAG_INIT)
| |