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