Namespaces
Variants

std::atomic_ref<T>:: operator++,++ (int) ,--,-- (int)

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
Proporcionado solo cuando T es un tipo integral distinto de cv bool o un tipo puntero-a-objeto
value_type operator ++ ( ) const noexcept ;
(1) (desde C++20)
value_type operator ++ ( int ) const noexcept ;
(2) (desde C++20)
value_type operator -- ( ) const noexcept ;
(3) (desde C++20)
value_type operator -- ( int ) const noexcept ;
(4) (desde C++20)

Incrementa o decrementa atómicamente el valor actual del objeto referenciado. Estas operaciones son operaciones de lectura-modificación-escritura.

1) Realiza pre-incremento atómico. Equivalente a return fetch_add ( 1 ) + 1 ; .
2) Realiza post-incremento atómico. Equivalente a return fetch_add ( 1 ) ; .
3) Realiza una disminución atómica previa. Equivalente a return fetch_sub ( 1 ) - 1 ;
4) Realiza una disminución atómica posterior. Equivalente a return fetch_sub ( 1 ) ; .
  • Para tipos enteros con signo, la aritmética está definida para usar representación en complemento a dos. No hay resultados indefinidos.
  • Para tipos puntero-a-objeto, el resultado puede ser una dirección indefinida, pero las operaciones por lo demás no tienen comportamiento indefinido. El programa está mal formado si std:: remove_pointer_t < T > no es un tipo de objeto completo.

Estas sobrecargas participan en la resolución de sobrecarga solo si std:: is_const_v < T > es false .

Contenidos

Valor de retorno

1,3) El valor del objeto referenciado después de la modificación.
2,4) El valor del objeto referenciado antes de la modificación.

Notas

A diferencia de la mayoría de los operadores de pre-incremento y pre-decremento, los operadores de pre-incremento y pre-decremento para atomic_ref no devuelven una referencia al objeto modificado. 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
LWG 3508
( P3323R1 )
C++20 los operadores de incremento y decremento 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)
agrega o resta atómicamente del valor referenciado
(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)