std::atomic_ref<T>:: fetch_sub
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Proporcionado solo cuando
T
es un tipo aritmético distinto de
cv
bool
o un tipo puntero-a-objeto
|
||
|
value_type fetch_sub
(
difference_type arg,
std::
memory_order
order
=
|
(constexpr desde C++26) | |
Reemplaza atómicamente el valor actual del objeto referenciado con el resultado de la resta aritmética del valor y arg . Esta operación es una operación de lectura-modificación-escritura. La memoria se ve afectada según el valor de order .
- Para tipos integrales con signo, la aritmética está definida para usar representación en complemento a dos. No hay resultados indefinidos.
- Para tipos de punto flotante, el entorno de punto flotante en efecto puede ser diferente del entorno de punto flotante del hilo llamante. La operación no necesita conformarse con los rasgos correspondientes de std::numeric_limits pero se recomienda hacerlo. Si el resultado no es un valor representable para su tipo, el resultado no está especificado pero la operación por lo demás no tiene comportamiento indefinido.
-
Para tipos puntero, el resultado puede ser una dirección indefinida, pero la operación por lo demás no tiene comportamiento indefinido.
- Si std:: remove_pointer_t < T > no es un tipo de objeto completo, el programa está mal formado.
Esta sobrecarga participa en la resolución de sobrecarga solo si std:: is_const_v < T > es false .
Contenidos |
Parámetros
| arg | - | el otro argumento de la resta aritmética |
| order | - | restricciones de orden de memoria a aplicar |
Valor de retorno
El valor referenciado por
*
ptr
, inmediatamente antes de los efectos de esta función.
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
|
LWG 3508
( P3323R1 ) |
C++20 |
fetch_sub
carecía de sentido para
const
T
|
restringido para aceptar solo
T
no constante
|