最終更新日時:
が更新

履歴 編集

function
<atomic>

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

atomic_flag() noexcept = default;         // (1)
atomic_flag(const atomic_flag&) = delete; // (2)
atomic_flag(FOR_ATOMIC_FLAG_INIT);        // (3)

概要

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

効果

  • (1) :
    • C++11 : フラグを未初期化状態にする。
    • C++14 : フラグを未規定の状態にする。
  • (3) : 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:
  • GCC, C++11 mode: 4.7.0
  • ICC: ??
  • Visual C++: 12.0
    • Visual C++ 11.0はコピーコンストラクタのdeleteに対応していないため、代わりにprivateで宣言のみ行う手法で代用されている。

参照