std::atomic_fetch_max, std::atomic_fetch_max_explicit - cppreference.com (original) (raw)
Defined in header | ||
---|---|---|
template< class T > T atomic_fetch_max( std::atomic<T>* obj, typename std::atomic<T>::value_type arg ) noexcept; | (1) | (since C++26) |
template< class T > T atomic_fetch_max( volatile std::atomic<T>* obj, typename std::atomic<T>::value_type arg ) noexcept; | (2) | (since C++26) |
template< class T > T atomic_fetch_max_explicit( std::atomic<T>* obj, typename std::atomic<T>::value_type arg, std::memory_order order ) noexcept; | (3) | (since C++26) |
template< class T > T atomic_fetch_max_explicit( volatile std::atomic<T>* obj, typename std::atomic<T>::value_type arg, std::memory_order order ) noexcept; | (4) | (since C++26) |
Atomically replaces the value pointed by obj with the result of std::max between the old value of obj and arg. Returns the value obj held previously. The operation is performed as if the following was executed:
1,2) obj->fetch_max(arg)
3,4) obj->fetch_max(arg, order)
If std::atomic<T>
has no fetch_max
member (this member is only provided for integral and pointer types except bool), the program is ill-formed.
[edit] Parameters
obj | - | pointer to the atomic object to modify |
---|---|---|
arg | - | the value to std::max with the value stored in the atomic object |
order | - | the memory synchronization ordering |
[edit] Return value
The value immediately preceding the effects of this function in the modification order of *obj.
[edit] Notes
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_atomic_min_max | 202403L | (C++26) | Atomic minimum/maximum |
[edit] Example
[edit] See also
| | atomically performs std::max between the argument and the value of the atomic object and obtains the value held previously (public member function of std::atomic) [edit] | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | replaces the atomic object with the result of std::min with a non-atomic argument and obtains the previous value of the atomic (function template) [edit] |