Spec-Zone.ru › C++

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

См. также

fetch_and
атомарно выполняет побитовую операцию И над аргументом и значением связанного объекта и возвращает предыдущее значение
(открытая функция-член)
fetch_or
атомарно выполняет побитовую операцию ИЛИ над аргументом и значением связанного объекта и возвращает предыдущее значение
(открытая функция-член)
fetch_xor
атомарно выполняет побитовую операцию исключающее ИЛИ над аргументом и значением связанного объекта и возвращает предыдущее значение
(открытая функция-член)
operator++operator++(int)operator--operator--(int)
атомарно увеличивает или уменьшает значение связанного объекта на единицу
(открытая функция-член)
operator+=operator-=
атомарно прибавляет значение к связанному объекту или вычитает его из значения связанного объекта
(открытая функция-член)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/atomic/atomic_ref/operator_arith3

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API