std::atomic_ref<T>:: fetch_sub
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Предоставляется только когда
T
является арифметическим типом, отличным от
cv
bool
или типом указателя на объект
|
||
|
value_type fetch_sub
(
difference_type arg,
std::
memory_order
order
=
|
(constexpr начиная с C++26) | |
Атомарно заменяет текущее значение ссылаемого объекта результатом арифметического вычитания значения и arg . Эта операция является операцией чтения-изменения-записи. Память затрагивается в соответствии со значением order .
- Для знаковых целочисленных типов арифметика определена с использованием представления в дополнительном коде. Неопределённых результатов нет.
- Для типов с плавающей точкой активное окружение с плавающей точкой может отличаться от окружения вызывающего потока. Операция не обязана соответствовать соответствующим характеристикам std::numeric_limits , но рекомендуется это делать. Если результат не является представимым значением для своего типа, результат не определён, но в остальном операция не имеет неопределённого поведения.
-
Для указательных типов результат может быть неопределённым адресом, но в остальном операция не имеет неопределённого поведения.
- Если std:: remove_pointer_t < T > не является полным типом объекта, программа является некорректной.
Эта перегрузка участвует в разрешении перегрузки только если std:: is_const_v < T > равно false .
Содержание |
Параметры
| arg | - | второй аргумент арифметического вычитания |
| order | - | ограничения порядка памяти для применения |
Возвращаемое значение
Значение, на которое ссылается
*
ptr
, непосредственно перед выполнением данной функции.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Отчёты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
|
LWG 3508
( P3323R1 ) |
C++20 |
fetch_sub
был бессмысленным для
const
T
|
ограничен для приема только non-const
T
|