最終更新日時: 2025年10月10日 13時00分13秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<atomic>

# std::atomic_ref::store_fminimum_num(C++26)

    constexpr void
      store_fminimum_num(difference_type operand,
                         memory_order order = memory_order_seq_cst
                         ) const noexcept;                          // (1) C++26

## 概要

値を読み込まずに最小値を設定する。

この関数は、`*this`が参照する値と`operand`の小さい方を求め、その値を`this`に参照させる。

この関数は、`fetch_fminimum_num()`と異なり、現在の (古い) 値を読み込むことなく現在の値に演算を行うため、高速に動作する。ただし変更前の古い値は戻り値として取得できない。

## 事前条件

- `order`は、以下のいずれかであること
  - `memory_order_relaxed`
  - `memory_order_release`
  - `memory_order_seq_cst`

## 効果

`order`で指定されたメモリオーダーにしたがって、`*this`が参照する値と`operand`の最小値を求めて、その値でアトミックに置き換える

## 戻り値

なし

## 例外

投げない

## 備考

- この関数は、`atomic_ref`クラスの浮動小数点数型に対する特殊化で定義される
- 浮動小数点数型
  - `std::fminimum_num()`関数と同様の動作をする

## 例

    #include <iostream>
    #include <atomic>

    int main()
    {
      int value = 2;

      std::atomic_ref{value}.store_fminimum_num(3);

      std::cout << value << std::endl;
    }

### 出力

    2

## バージョン

### 言語

- C++26

### 処理系

- Clang: 21 ❌
- GCC: 15 ❌
- Visual C++: 2022 Update 13 ❌

## 参照

- P3111R8 Atomic Reduction Operations