Spec-Zone.ru › C++

std::atomic_ref<T>::operator+=,-=,&=,|=,^=

member only of atomic_ref<Integral> and atomic_ref<Floating> template specializations
T operator+=( T arg ) const noexcept;
(1)
member only of atomic_ref<T*> template specialization
T* operator+=( std::ptrdiff_t arg ) const noexcept;
(1)
member only of atomic_ref<Integral> and atomic_ref<Floating> template specializations
T operator-=( T arg ) const noexcept;
(1)
member only of atomic_ref<T*> template specialization
T* operator-=( std::ptrdiff_t arg ) const noexcept;
(1)
member only of atomic_ref<Integral> template specialization
T operator&=( T arg ) const noexcept;
(3)
T operator|=( T arg ) const noexcept;
(4)
T operator^=( T arg ) const noexcept;
(5)

Атомарно заменяет текущее значение ссылаемого объекта результатом вычисления, включающего предыдущее значение и arg. Эти операции являются операциями чтения-модификации-записи.

1) Выполняет атомное сложение. Эквивалентно return fetch_add(arg) + arg;.
2) Выполняет атомное вычитание. Эквивалентно return fetch_sub(arg) - arg;.
3) Выполняет атомное побитовое и. Эквивалентно return fetch_and(arg) & arg;.
4) Выполняет атомное побитовое или. Эквивалентно return fetch_or(arg) | arg;.
5) Выполняет атомное побитовое исключающее или. Эквивалентно return fetch_xor(arg) ^ arg;.

Для целых типов со знаком арифметика определяется с использованием представления со знаком дополнительный код. Нет неопределённых результатов.

Для типов с плавающей точкой окружение с плавающей точкой, действующее в данный момент, может отличаться от окружения с плавающей точкой вызывающей нити. Операция не обязана соответствовать соответствующим свойствам std::numeric_limits , но рекомендуется это делать. Если результат не является представимым значением для своего типа, результат не определён, но в остальном операция не имеет неопределённого поведения.

Для T* типов результатом может быть неопределённый адрес, но в остальном операции не имеют неопределённого поведения. Программа некорректна, если T не является типом объекта.

Параметры

arg - аргумент для арифметической операции

Возвращаемое значение

Полученное значение (то есть результат применения соответствующего бинарного оператора к значению непосредственно перед действием соответствующей функции-члена).

Примечания

В отличие от большинства операторов сложного присваивания, операторы сложного присваивания для atomic_ref не возвращают ссылку на свои левые операнды. Вместо этого они возвращают копию хранящегося значения.

См. также

operator++operator++(int)operator--operator--(int)
атомарно увеличивает или уменьшает ссылаемый объект на единицу
(публичная функция-член)

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

Spec-Zone.ru

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