最終更新日時(UTC):
が更新

履歴 編集

function
<atomic>

std::atomic_flag::コンストラクタ(C++11)

atomic_flag() noexcept = default;         // (1) C++11
constexpr atomic_flag() noexcept;         // (1) C++20

atomic_flag(const atomic_flag&) = delete; // (2) C++11
atomic_flag(atomic_flag&&) = delete;      // (3) C++11

atomic_flag(FOR_ATOMIC_FLAG_INIT);        // (4) C++11
                                          // (4) C++20で非推奨

概要

  • (1) : デフォルトコンストラクタ
  • (2) : コピーコンストラクタ。コピー禁止
  • (3) : ムーブコンストラクタ。ムーブ禁止
  • (4) : ATOMIC_FLAG_INITマクロのための特別なコンストラクタ。フラグをクリアする。atomic_flagクラスのデフォルトコンストラクタはデフォルト定義されるため、デフォルト構築では未初期化状態となる。

効果

  • (1) :
    • C++11 : フラグを未初期化状態にする
    • C++14 : フラグを未規定の状態にする
    • C++20 : フラグをクリア状態にする
  • (4) :
    • ATOMIC_FLAG_INITマクロを使用することで、フラグがクリアされた状態となる
    • C++11 : このマクロを、静的な有効期間を持つatomic_flagオブジェクトに使用した場合、その初期化は静的に行われる
    • C++14 : このマクロを、完全に静的な有効期間を持つatomic_flagオブジェクトに使用した場合、その初期化は静的に行われる

#include <iostream>
#include <atomic>

int main()
{
  std::atomic_flag x = ATOMIC_FLAG_INIT;
}

出力

バージョン

言語

  • C++11

処理系

  • Clang: ??
  • GCC: 4.7.0
  • ICC: ??
  • Visual C++: 2013
    • 2012はコピーコンストラクタのdeleteに対応していないため、代わりにprivateで宣言のみ行う手法で代用されている。

参照