Namespaces
Variants

std::atomic_ref<T>:: operator&=,|=,^=

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
value_type operator & = ( value_type arg ) const noexcept ;
(1) (depuis C++20)
value_type operator | = ( value_type arg ) const noexcept ;
(2) (depuis C++20)
value_type operator ^ = ( value_type arg ) const noexcept ;
(3) (depuis C++20)

Remplace atomiquement la valeur actuelle de l'objet référencé par le résultat du calcul impliquant la valeur précédente et arg . Ces opérations sont des opérations de lecture-modification-écriture.

  • operator & = effectue un ET binaire atomique. Équivalent à return fetch_and ( arg ) & arg ; .
  • operator ! = effectue un OU binaire atomique. Équivalent à return fetch_or ( arg ) | arg ; .
  • operator ^ = effectue un OU exclusif binaire atomique. Équivalent à return fetch_xor ( arg ) ^ arg ; .

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

Table des matières

Paramètres

arg - l'argument pour l'opération arithmétique

Valeur de retour

La valeur résultante (c'est-à-dire le résultat de l'application de l'opérateur binaire correspondant à la valeur précédant immédiatement les effets de la fonction membre correspondante).

Notes

Contrairement à la plupart des opérateurs d'affectation composée, les opérateurs d'affectation composée pour atomic_ref ne renvoient pas de référence à leurs arguments de gauche. Ils renvoient plutôt une copie de la valeur stockée.

Exemple

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'affectation composés n'avaient pas de sens pour const T contraint pour n'accepter que les T non-const

Voir aussi

effectue atomiquement un ET binaire entre l'argument et la valeur de l'objet référencé et obtient la valeur détenue précédemment
(fonction membre publique)
effectue atomiquement un OU binaire entre l'argument et la valeur de l'objet référencé et obtient la valeur détenue précédemment
(fonction membre publique)
effectue atomiquement un OU exclusif binaire entre l'argument et la valeur de l'objet référencé et obtient la valeur détenue précédemment
(fonction membre publique)
incrémente ou décrémente atomiquement l'objet référencé de un
(fonction membre publique)
ajoute ou soustrait atomiquement à la valeur référencée
(fonction membre publique)