Skip to content

Latest commit

 

History

History
61 lines (44 loc) · 1.34 KB

op_constructor.md

File metadata and controls

61 lines (44 loc) · 1.34 KB

コンストラクタ

  • atomic[meta header]
  • std[meta namespace]
  • atomic_ref[meta class]
  • function[meta id-type]
  • cpp20[meta cpp]
atomic_ref() = delete;                        // (1) C++20
explicit atomic_ref(T& obj);                  // (2) C++20
atomic_ref(const atomic_ref& other) noexcept; // (3) C++20

概要

  • (1) : デフォルト構築禁止
  • (2) : objを参照して*thisにポインタとして保持する
  • (3) : コピーコンストラクタ。otherが参照するオブジェクトを*thisもまた参照する

事前条件

  • 参照するオブジェクトがメンバ定数のアライメント値required_alignmentにアライメントされていること

例外

投げない

#include <atomic>

int main()
{
  int value = 3;

  // valueを参照するatomic_refオブジェクトを構築
  std::atomic_ref<int> a{value};

  // コンストラクタの引数によって、
  // クラステンプレートのテンプレート引数を推論 (<int>を省略)
  std::atomic_ref b{value};

  // cとbで同じ値 (value) を参照
  std::atomic_ref c = b;
}

出力

バージョン

言語

  • C++20

処理系