53 class atomic :
public std::atomic<T>
55 using base_type = std::atomic<T>;
59 atomic() ETL_NOEXCEPT =
default;
61 ETL_CONSTEXPR atomic(T desired) ETL_NOEXCEPT
66 atomic(
const atomic&) =
delete;
67 atomic& operator=(
const atomic&) =
delete;
68 atomic& operator=(
const atomic&)
volatile =
delete;
70 using base_type::operator=;
73 T fetch_max(T v, std::memory_order order = std::memory_order_seq_cst)
75 T old = this->load(order);
79 if (this->compare_exchange_weak(old, v, order))
88 T fetch_max(T v, std::memory_order order = std::memory_order_seq_cst)
volatile
90 T old = this->load(order);
94 if (this->compare_exchange_weak(old, v, order))
104 T fetch_min(T v, std::memory_order order = std::memory_order_seq_cst)
106 T old = this->load(order);
110 if (this->compare_exchange_weak(old, v, order))
119 T fetch_min(T v, std::memory_order order = std::memory_order_seq_cst)
volatile
121 T old = this->load(order);
125 if (this->compare_exchange_weak(old, v, order))