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
Fourni uniquement lorsque T est un type entier autre que cv bool ou un type pointeur-vers-objet
value_type operator ++ ( ) const noexcept ;
(1) (depuis C++20)
value_type operator ++ ( int ) const noexcept ;
(2) (depuis C++20)
value_type operator -- ( ) const noexcept ;
(3) (depuis C++20)
value_type operator -- ( int ) const noexcept ;
(4) (depuis C++20)

Incrémente ou décrémente atomiquement la valeur actuelle de l'objet référencé. Ces opérations sont des opérations de lecture-modification-écriture.

1) Effectue un pré-incrément atomique. Équivalent à return fetch_add ( 1 ) + 1 ; .
2) Effectue un post-incrément atomique. Équivalent à return fetch_add ( 1 ) ; .
3) Effectue un pré-décrément atomique. Équivalent à return fetch_sub ( 1 ) - 1 ;
4) Effectue un post-décrément atomique. Équivalent à return fetch_sub ( 1 ) ; .
  • Pour les types entiers signés, l'arithmétique est définie pour utiliser la représentation en complément à deux. Il n'y a pas de résultats indéfinis.
  • Pour les types pointeur-vers-objet, le résultat peut être une adresse indéfinie, mais les opérations n'ont par ailleurs aucun comportement indéfini. Le programme est mal formé si std:: remove_pointer_t < T > n'est pas un type d'objet complet.

Ces surcharges participent à la résolution de surcharge seulement si std:: is_const_v < T > est false .

Table des matières

Valeur de retour

1,3) La valeur de l'objet référencé après la modification.
2,4) La valeur de l'objet référencé avant la modification.

Notes

Contrairement à la plupart des opérateurs de pré-incrémentation et pré-décrémentation, les opérateurs de pré-incrémentation et pré-décrémentation pour atomic_ref ne renvoient pas une référence à l'objet modifié. Ils renvoient plutôt une copie de la valeur stockée.

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 3508
( P3323R1 )
C++20 les opérateurs d'incrémentation et de décrémentation n'avaient pas de sens pour const T contraint pour n'accepter que les T non-const

Voir aussi

ajoute atomiquement l'argument à la valeur stockée dans l'objet référencé et obtient la valeur détenue précédemment
(fonction membre publique)
soustrait atomiquement l'argument de la valeur stockée dans l'objet référencé et obtient la valeur détenue précédemment
(fonction membre publique)
ajoute ou soustrait atomiquement de la valeur référencée
(fonction membre publique)
effectue atomiquement un ET, OU, XOR bit à bit avec la valeur référencée
(fonction membre publique)