- atomic[meta header]
- macro[meta id-type]
- cpp11[meta cpp]
- cpp20deprecated[meta cpp]
# define ATOMIC_FLAG_INIT see below
- see below[italic]
この機能はC++20で非推奨となった。std::atomic_flag
クラスのデフォルトコンストラクタが値初期化するようになったため、初期化のためにこの機能を使用する必要はない。
フラグを初期化する。
このマクロは、atomic_flag
オブジェクトの初期化に使用し、フラグをクリア状態にする。静的オブジェクトに対しては、その初期化は静的に行われなければならない。
C言語との互換性のために、std::atomic_flag
クラスのデフォルトコンストラクタはトリビアルに定義され、初期値は未規定となっていた。そのためこの機能を介してstd::atomic_flag
オブジェクトを初期化する必要があったが、C++20からデフォルトコンストラクタが値初期化を行うようになったため、初期化のためにこの機能を使用する必要はなくなった。
#include <iostream>
#include <atomic>
int main()
{
std::atomic_flag x = ATOMIC_FLAG_INIT;
// フラグを立て、変更前の値を確認する
bool before = x.test_and_set();
std::cout << std::boolalpha << before << std::endl;
}
- ATOMIC_FLAG_INIT[color ff0000]
- std::atomic_flag[link atomic_flag.md]
- x.test_and_set()[link atomic_flag/test_and_set.md]
false
- C++11
- Clang: ??
- GCC: 4.7.0
- ICC: ??
- Visual C++: 2012, 2013