std::atomic<T>:: operator+=,-=
|
miembro exclusivo de
atomic<
Integral
>
especializaciones
y
atomic<
Floating
>
especializaciones
(desde C++20)
|
||
|
T operator
+
=
(
T arg
)
noexcept
;
|
(1) | (desde C++11) |
|
T operator
+
=
(
T arg
)
volatile
noexcept
;
|
(2) | (desde C++11) |
|
T operator
-
=
(
T arg
)
noexcept
;
|
(3) | (desde C++11) |
|
T operator
-
=
(
T arg
)
volatile
noexcept
;
|
(4) | (desde C++11) |
|
miembro exclusivo de
atomic<T*>
especialización parcial
|
||
|
T
*
operator
+
=
(
std::
ptrdiff_t
arg
)
noexcept
;
|
(5) | (desde C++11) |
|
T
*
operator
+
=
(
std::
ptrdiff_t
arg
)
volatile
noexcept
;
|
(6) | (desde C++11) |
|
T
*
operator
-
=
(
std::
ptrdiff_t
arg
)
noexcept
;
|
(7) | (desde C++11) |
|
T
*
operator
-
=
(
std::
ptrdiff_t
arg
)
volatile
noexcept
;
|
(8) | (desde C++11) |
Reemplaza atómicamente el valor actual con el resultado del cálculo que involucra el valor anterior y arg . La operación es una operación de lectura-modificación-escritura.
- operator + = realiza una suma atómica. Equivalente a return fetch_add ( arg ) + arg ; .
- operator - = realiza una resta atómica. Equivalente a return fetch_sub ( arg ) - arg ; .
|
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 ajustarse a 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. |
(since C++20) |
T
no es un tipo de objeto completo, el programa está mal formado.
|
Está obsoleto si std:: atomic < T > :: is_always_lock_free es false y cualquier sobrecarga volatile participa en la resolución de sobrecarga. |
(since C++20) |
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 inmediatamente anterior a los efectos de la función miembro correspondiente en el orden de modificación de * this ).
Notas
A diferencia de la mayoría de los operadores de asignación compuesta, los operadores de asignación compuesta para tipos atómicos no devuelven una referencia a sus argumentos del lado izquierdo. En su lugar, devuelven una copia del valor almacenado.
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 |
|---|---|---|---|
| P0558R1 | C++11 | aritmética permitida en punteros a void (posiblemente calificado) o función | hecho incorrecto |
Véase también
|
agrega atómicamente el argumento al valor almacenado en el objeto atómico y obtiene el valor mantenido previamente
(función miembro pública) |
|
|
resta atómicamente el argumento del valor almacenado en el objeto atómico y obtiene el valor mantenido previamente
(función miembro pública) |
|
|
incrementa o decrementa el valor atómico en uno
(función miembro pública) |
|
|
realiza operaciones AND, OR, XOR a nivel de bits con el valor atómico
(función miembro pública) |