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 | ||||
|
Proporcionado solo cuando
T
es un tipo aritmético distinto de
cv
bool
o un tipo puntero-a-objeto
|
||
|
value_type operator
+
=
(
difference_type arg
)
const
noexcept
;
|
(1) | (constexpr desde C++26) |
|
value_type operator
-
=
(
difference_type arg
)
const
noexcept
;
|
(2) | (constexpr desde C++26) |
Reemplaza atómicamente el valor actual referenciado por
*
ptr
con el resultado del cálculo que involucra el valor anterior y
arg
. Estas operaciones son operaciones de lectura-modificación-escritura.
- 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 que lo haga. 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.
Estas sobrecargas participan en la resolución de sobrecarga solo si std:: is_const_v < T > es false .
Contenidos |
Parámetros
| arg | - | el argumento para la operación aritmética |
Valor de retorno
El valor resultante (es decir, el resultado de aplicar el operador binario correspondiente al valor referenciado por
*
ptr
inmediatamente antes de los efectos de la función miembro correspondiente).
Notas
A diferencia de la mayoría de los operadores de asignación compuesta, los operadores de asignación compuesta para
atomic_ref
devuelven una copia del valor almacenado en lugar de una referencia a
arg
.
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 de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
|
LWG 3508
( P3323R1 ) |
C++20 | los operadores de asignación compuesta carecían de sentido para const T |
restringidos para aceptar solo
T
no constante
|
Véase también
|
agrega atómicamente el argumento al valor almacenado en el objeto referenciado y obtiene el valor mantenido previamente
(función miembro pública) |
|
|
resta atómicamente el argumento del valor almacenado en el objeto referenciado y obtiene el valor mantenido previamente
(función miembro pública) |
|
|
incrementa o decrementa atómicamente el objeto referenciado en uno
(función miembro pública) |
|
|
realiza atómicamente operaciones AND, OR, XOR a nivel de bits con el valor referenciado
(función miembro pública) |