std::atomic_ref<T>::operator+=,-=
| Nur bereitgestellt, wenn T ein arithmetischer Typ außer cv bool oder ein Zeigertyp auf ein Objekt 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 verwiesen wird, durch das Ergebnis einer Berechnung, die den vorherigen Wert und arg involviert. Diese Operationen sind Lese-Modifizierungs-Schreib-Operationen.
- Für vorzeichenbehaftete ganzzahlige Typen wird die Arithmetik in zweierkomplementärer Darstellung definiert. Es gibt keine undefinierten Ergebnisse.
- Für Gleitkommatypen kann die aktive Gleitkomma-Umgebung von der Gleitkomma-Umgebung des aufrufenden Threads abweichen. Die Operation muss nicht den entsprechenden std::numeric_limits-Merkmalen entsprechen, ist aber ermutigt, dies zu tun. Wenn das Ergebnis kein darstellbarer Wert für seinen Typ ist, ist das Ergebnis nicht spezifiziert, 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.
- Wenn std::remove_pointer_t<T> kein vollständiger Objekttyp ist, ist das Programm schlecht geformt.
Diese Überladungen nehmen nur an der Overload-Auflösung teil, wenn std::is_const_v<T> false ist.
Inhalt |
[edit] Parameter
| arg | - | das Argument für die arithmetische Operation |
[edit] Rückgabewert
Der resultierende Wert (d.h. das Ergebnis der Anwendung des entsprechenden binären Operators auf den Wert, auf den *ptr unmittelbar vor den Effekten der entsprechenden Memberfunktion verwiesen hat).
[edit] Hinweise
Im Gegensatz zu den meisten zusammengesetzten Zuweisungsoperatoren geben die zusammengesetzten Zuweisungsoperatoren für atomic_ref eine Kopie des gespeicherten Wertes zurück und nicht eine Referenz auf arg.
[edit] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[edit] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 3508 (P3323R1) |
C++20 | Zusammengesetzte Zuweisungsoperatoren waren bedeutungslos für const T | constrained to accept only non-const T |
[edit] Siehe auch
| addiert atomar das Argument zum Wert, der im referenzierten Objekt gespeichert ist, und gibt den zuvor gehaltenen Wert zurück (öffentliche Memberfunktion) | |
| subtrahiert atomar das Argument vom Wert, der im referenzierten Objekt gespeichert ist, und gibt den zuvor gehaltenen Wert zurück (öffentliche Memberfunktion) | |
| inkrementiert oder dekrementiert das referenzierte Objekt atomar um eins (öffentliche Memberfunktion) | |
| führt atomar bitweises AND, OR, XOR mit dem referenzierten Wert durch (öffentliche Memberfunktion) |