std::atomic_ref<T>:: operator+=,-=
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
(C++26)
|
||||
|
Operations for arithmetic types
(except
bool
and pointer-to-object)
|
||||
|
atomic_ref::operator+=
atomic_ref::operator-=
|
||||
|
Operations for integral types
(except
bool
and pointer-to-object)
|
||||
|
(C++26)
|
||||
|
(C++26)
|
||||
|
Operations for integral types
(except
bool
)
|
||||
| Constants | ||||
|
Предоставляется только когда
T
является арифметическим типом, отличным от
cv
bool
или типом указателя на объект
|
||
|
value_type operator
+
=
(
difference_type arg
)
const
noexcept
;
|
(1) | (constexpr начиная с C++26) |
|
value_type operator
-
=
(
difference_type arg
)
const
noexcept
;
|
(2) | (constexpr начиная с C++26) |
Атомарно заменяет текущее значение, на которое ссылается
*
ptr
, результатом вычисления с участием предыдущего значения и
arg
. Эти операции являются операциями чтения-изменения-записи.
- Для знаковых целочисленных типов арифметика определена с использованием дополнительного кода. Неопределённых результатов не существует.
- Для типов с плавающей точкой активное окружение с плавающей точкой может отличаться от окружения вызывающего потока. Операция не обязана соответствовать соответствующим характеристикам std::numeric_limits , но рекомендуется это делать. Если результат не является представимым значением для своего типа, результат не специфицирован, но в остальном операция не имеет неопределённого поведения.
-
Для указательных типов результат может быть неопределённым адресом, но в остальном операция не имеет неопределённого поведения.
- Если std:: remove_pointer_t < T > не является полным типом объекта, программа является некорректной.
Эти перегрузки участвуют в разрешении перегрузки только если std:: is_const_v < T > равно false .
Содержание |
Параметры
| arg | - | аргумент для арифметической операции |
Возвращаемое значение
Результирующее значение (то есть результат применения соответствующего бинарного оператора к значению, на которое ссылается
*
ptr
непосредственно перед эффектами соответствующей функции-члена).
Примечания
В отличие от большинства составных операторов присваивания, составные операторы присваивания для
atomic_ref
возвращают копию хранимого значения вместо ссылки на
arg
.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Отчёты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
|
LWG 3508
( P3323R1 ) |
C++20 | составные операторы присваивания были бессмысленны для const T |
ограничены для приема только неконстантного
T
|
Смотрите также
|
атомически добавляет аргумент к значению, хранящемуся в ссылочном объекте, и получает значение, хранившееся ранее
(публичная функция-член) |
|
|
атомически вычитает аргумент из значения, хранящегося в ссылочном объекте, и получает значение, хранившееся ранее
(публичная функция-член) |
|
|
атомически увеличивает или уменьшает ссылочный объект на единицу
(публичная функция-член) |
|
|
атомически выполняет побитовые операции AND, OR, XOR со ссылочным значением
(публичная функция-член) |