- atomic[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp26[meta cpp]
namespace std {
template <class T>
T
atomic_fetch_max(volatile atomic<T>* object,
typename atomic<T>::value_type operand) noexcept; // (1) C++26
template <class T>
constexpr T
atomic_fetch_max(atomic<T>* object,
typename atomic<T>::value_type operand) noexcept; // (2) C++26
}- atomic[link /reference/atomic/atomic.md]
アトミックに最大値を設定・取得する
- (1), (2) : 型
Tがオブジェクト型であること。型Tがvoid*や関数ポインタであってはならない - (1) :
atomic<T>::is_always_lock_freeがtrueであること
memory_order_seq_cstのメモリオーダーにしたがって、std::max()アルゴリズムのように*objectが保持する値とoperandの最大値を求め、アトミックにその値で置き換えて返す
投げない
#include <iostream>
#include <atomic>
int main()
{
std::atomic<int> x(3);
int ret = std::atomic_fetch_max(&x, 2);
std::cout << ret << std::endl;
}- std::atomic_fetch_max[color ff0000]
3
- C++26