std::atomic<T>:: operator+=,-=
|
Nur Mitglied von
atomic<
Integral
>
Spezialisierungen
und
atomic<
Floating
>
Spezialisierungen
(seit C++20)
|
||
|
T operator
+
=
(
T arg
)
noexcept
;
|
(1) | (seit C++11) |
|
T operator
+
=
(
T arg
)
volatile
noexcept
;
|
(2) | (seit C++11) |
|
T operator
-
=
(
T arg
)
noexcept
;
|
(3) | (seit C++11) |
|
T operator
-
=
(
T arg
)
volatile
noexcept
;
|
(4) | (seit C++11) |
|
Nur Mitglied von
atomic<T*>
Partialspezialisierung
|
||
|
T
*
operator
+
=
(
std::
ptrdiff_t
arg
)
noexcept
;
|
(5) | (seit C++11) |
|
T
*
operator
+
=
(
std::
ptrdiff_t
arg
)
volatile
noexcept
;
|
(6) | (seit C++11) |
|
T
*
operator
-
=
(
std::
ptrdiff_t
arg
)
noexcept
;
|
(7) | (seit C++11) |
|
T
*
operator
-
=
(
std::
ptrdiff_t
arg
)
volatile
noexcept
;
|
(8) | (seit C++11) |
Ersetzt atomar den aktuellen Wert mit dem Ergebnis einer Berechnung unter Einbeziehung des vorherigen Wertes und arg . Der Vorgang ist ein Lese-Modifizier-Schreibe-Vorgang.
- operator + = führt atomare Addition durch. Entspricht return fetch_add ( arg ) + arg ; .
- operator - = führt atomare Subtraktion durch. Entspricht return fetch_sub ( arg ) - arg ; .
|
Für Gleitkommatypen kann die Gleitkommaumgebung , die in Kraft ist, von der Gleitkommaumgebung des aufrufenden Threads abweichen. Die Operation muss nicht den entsprechenden std::numeric_limits -Eigenschaften entsprechen, wird jedoch dazu ermutigt. Wenn das Ergebnis kein darstellbarer Wert für seinen Typ ist, ist das Ergebnis nicht spezifiziert, aber die Operation hat ansonsten kein undefiniertes Verhalten. |
(since C++20) |
T
kein vollständiger Objekttyp ist, ist das Programm fehlerhaft.
|
Es ist veraltet, wenn std:: atomic < T > :: is_always_lock_free false ist und irgendeine volatile Überladung an der Überladungsauflösung teilnimmt. |
(since C++20) |
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 unmittelbar vor den Effekten der entsprechenden Memberfunktion in der modification order von * this ).
Hinweise
Im Gegensatz zu den meisten zusammengesetzten Zuweisungsoperatoren geben die zusammengesetzten Zuweisungsoperatoren für atomare Typen keine Referenz auf ihre linken Argumente zurück. Stattdessen geben sie eine Kopie des gespeicherten Werts zurück.
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 |
|---|---|---|---|
| P0558R1 | C++11 | Arithmetik erlaubt auf Zeigern zu (möglicherweise cv-qualifiziertem) void oder Funktion | als fehlerhaft gemacht |
Siehe auch
|
addiert atomar das Argument zum im atomaren Objekt gespeicherten Wert und erhält den zuvor gehaltenen Wert
(öffentliche Elementfunktion) |
|
|
subtrahiert atomar das Argument vom im atomaren Objekt gespeicherten Wert und erhält den zuvor gehaltenen Wert
(öffentliche Elementfunktion) |
|
|
erhöht oder verringert den atomaren Wert um eins
(öffentliche Elementfunktion) |
|
|
führt bitweises UND, ODER, XOR mit dem atomaren Wert aus
(öffentliche Elementfunktion) |