std::atomic_ref<T>::exchange
value_type exchange( value_type desired,
std::memory_order order =
std::memory_order_seq_cst ) const noexcept;
| (constexpr since C++26) |
Атомарно заменяет значение объекта, на который имеется ссылка, на desired. Операция является операцией чтения-модификации-записи. Влияние на память определяется значением order.
Эта перегрузка участвует в разрешении перегрузки только в том случае, если std::is_const_v<T> является false.
Параметры
| desired | - | значение для присваивания |
| order | - | ограничения порядка памяти, которые необходимо соблюдать |
Возвращаемое значение
Значение объекта, на который имеется ссылка, до вызова.
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение согласно опубликованной версии | Правильное поведение |
|---|---|---|---|
|
LWG 3508 (P3323R1) | C++20 |
exchange не имело смысла для constT | ограничена приёмом только неконстантных T |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/atomic/atomic_ref/exchange