Skip to content

Latest commit

 

History

History
62 lines (44 loc) · 1.94 KB

atomic_flag_init.md

File metadata and controls

62 lines (44 loc) · 1.94 KB

ATOMIC_FLAG_INIT

  • 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++20)

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

処理系

参照