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
Nur bereitgestellt, wenn T ein arithmetischer Typ außer cv bool oder ein Zeiger-auf-Objekt-Typ ist
value_type operator + = ( difference_type arg ) const noexcept ;
(1) (constexpr seit C++26)
value_type operator - = ( difference_type arg ) const noexcept ;
(2) (constexpr seit C++26)

Ersetzt atomar den aktuellen Wert, auf den * ptr verweist, mit dem Ergebnis einer Berechnung unter Einbeziehung des vorherigen Werts und arg . Diese Operationen sind Lese-Modifizieren-Schreiben-Operationen.

1) operator + = führt atomare Addition durch. Entspricht return fetch_add ( arg ) + arg ; .
2) operator - = führt atomare Subtraktion durch. Entspricht return fetch_sub ( arg ) - arg ; .
  • Für vorzeichenbehaftete Ganzzahltypen ist die Arithmetik als Zweierkomplementdarstellung definiert. Es gibt keine undefinierten Ergebnisse.
  • Für Gleitkommatypen kann die Gleitkommaumgebung von der des aufrufenden Threads abweichen. Die Operation muss nicht den entsprechenden std::numeric_limits Eigenschaften entsprechen, wird aber dazu ermutigt. Wenn das Ergebnis kein darstellbarer Wert für seinen Typ ist, ist das Ergebnis unspezifiziert, aber die Operation hat ansonsten kein undefiniertes Verhalten.
  • Für Zeigertypen kann das Ergebnis eine undefinierte Adresse sein, aber die Operation hat ansonsten kein undefiniertes Verhalten.

Diese Überladungen nehmen an der Überladungsauflösung nur teil, wenn std:: is_const_v < T > false ist.

Inhaltsverzeichnis

Parameter

arg - das Argument für die arithmetische Operation

Rückgabewert

Der resultierende Wert (das heißt, das Ergebnis der Anwendung des entsprechenden binären Operators auf den Wert, auf den * ptr unmittelbar vor den Effekten der entsprechenden Memberfunktion verweist).

Hinweise

Im Gegensatz zu den meisten zusammengesetzten Zuweisungsoperatoren geben die zusammengesetzten Zuweisungsoperatoren für atomic_ref eine Kopie des gespeicherten Werts zurück, anstatt eine Referenz auf arg .

Beispiel

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 3508
( P3323R1 )
C++20 zusammengesetzte Zuweisungsoperatoren waren bedeutungslos für const T eingeschränkt, um nur non-const T zu akzeptieren

Siehe auch

addiert atomar das Argument zum im referenzierten Objekt gespeicherten Wert und erhält den zuvor gehaltenen Wert
(öffentliche Elementfunktion)
subtrahiert atomar das Argument vom im referenzierten Objekt gespeicherten Wert und erhält den zuvor gehaltenen Wert
(öffentliche Elementfunktion)
inkrementiert oder dekrementiert atomar das referenzierte Objekt um eins
(öffentliche Elementfunktion)
führt atomar bitweise UND-, ODER- und XOR-Operationen mit dem referenzierten Wert durch
(öffentliche Elementfunktion)