最終更新日時: 2024年12月23日 16時58分47秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<atomic>

# std::atomic_ref::load(C++20)

    T
      load(memory_order order = memory_order_seq_cst) const noexcept; // (1) C++20
    constexpr value_type
      load(memory_order order = memory_order_seq_cst) const noexcept; // (1) C++26

## 概要

値を読み込む

## 事前条件

`order`が以下のメモリオーダーではないこと：

- `memory_order_release`
- `memory_order_acq_rel`

## 効果

`order`で指定されたメモリオーダーにしたがって、値を読み込む

## 戻り値

`*this`が参照するオブジェクトをアトミックに読み込んで返す

## 例外

投げない

## 例

    #include <iostream>
    #include <atomic>
    #include <thread>

    int main()
    {
      int value = 3;
      std::atomic_ref<int> x{value};

      std::thread t{[&x]{
        int n = x.load();
        std::cout << n << std::endl;
      }};
      t.join();
    }

### 出力

    3

## バージョン

### 言語

- C++20

### 処理系

- Clang: 9.0 ❌
- GCC: 10.1 ✅
- Visual C++: ??

## 参照

- P3323R1 cv-qualified types in `atomic` and `atomic_ref`
  - C++26でCV修飾されたテンプレート引数を受け取れるようになった
- P3309R3 `constexpr atomic` and `atomic_ref`
  - C++26で`constexpr`に対応した