std::atomic_ref<T>::operator&=,|=,^=
Предоставляется только если T является целочисленным типом, отличным от cv bool
| ||
value_type operator&=( value_type arg ) const noexcept; | (1) | (начиная с C++20) |
value_type operator|=( value_type arg ) const noexcept; | (2) | (начиная с C++20) |
value_type operator^=( value_type arg ) const noexcept; | (3) | (начиная с C++20) |
Атомарно заменяет текущее значение связанного объекта результатом вычисления с использованием предыдущего значения и arg. Эти операции являются операциями чтения-изменения-записи.
-
operator&= выполняет атомарную побитовую операцию И. Эквивалентно
return fetch_and(arg) & arg;. -
operator!= выполняет атомарную побитовую операцию ИЛИ. Эквивалентно
return fetch_or(arg) | arg;. -
operator^= выполняет атомарную побитовую операцию исключающее ИЛИ. Эквивалентно
return fetch_xor(arg) ^ arg;.
Эти перегрузки участвуют в разрешении перегрузки только если std::is_const_v<T> является false.
Параметры
| arg | - | аргумент арифметической операции |
Возвращаемое значение
Полученное значение (то есть результат применения соответствующего бинарного оператора к значению, непосредственно предшествовавшему выполнению соответствующей функции-члена).
Примечания
В отличие от большинства операторов составного присваивания, операторы составного присваивания для atomic_ref не возвращают ссылку на свои левые аргументы. Вместо этого они возвращают копию сохранённого значения.
Пример
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение согласно опубликованной версии | Исправленное поведение |
|---|---|---|---|
|
LWG 3508 (P3323R1) | C++20 | операторы составного присваивания не имели смысла для constT | ограничены так, чтобы принимать только T без const |
См. также
| атомарно выполняет побитовую операцию И над аргументом и значением связанного объекта и возвращает предыдущее значение (открытая функция-член) |
|
| атомарно выполняет побитовую операцию ИЛИ над аргументом и значением связанного объекта и возвращает предыдущее значение (открытая функция-член) |
|
| атомарно выполняет побитовую операцию исключающее ИЛИ над аргументом и значением связанного объекта и возвращает предыдущее значение (открытая функция-член) |
|
| атомарно увеличивает или уменьшает значение связанного объекта на единицу (открытая функция-член) |
|
| атомарно прибавляет значение к связанному объекту или вычитает его из значения связанного объекта (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/atomic/atomic_ref/operator_arith3