std::atomic_ref<T>::operator++,++(int),--,--(int)
Von cppreference.com
< cpp | atomic | atomic ref
| Nur bereitgestellt, wenn T ein ganzzahliger Typ außer cv bool oder ein Zeigertyp auf ein Objekt ist |
||
| value_type operator++() const noexcept; |
(1) | (seit C++20) |
| value_type operator++( int ) const noexcept; |
(2) | (seit C++20) |
| value_type operator--() const noexcept; |
(3) | (seit C++20) |
| value_type operator--( int ) const noexcept; |
(4) | (seit C++20) |
Inkrementiert oder dekrementiert atomar den aktuellen Wert des referenzierten Objekts. Diese Operationen sind Lese-Modifizierungs-Schreib-Operationen.
1) Führt atomares Prä-Inkrement durch. Äquivalent zu return fetch_add(1) + 1;.
2) Führt atomares Post-Inkrement durch. Äquivalent zu return fetch_add(1);.
3) Führt atomares Prä-Dekrement durch. Äquivalent zu return fetch_sub(1) - 1;
4) Führt atomares Post-Dekrement durch. Äquivalent zu return fetch_sub(1);.
- Für vorzeichenbehaftete ganzzahlige Typen wird die Arithmetik in zweierkomplementärer Darstellung definiert. Es gibt keine undefinierten Ergebnisse.
- Für Zeigertypen auf Objekte kann das Ergebnis eine undefinierte Adresse sein, die Operationen ansonsten jedoch kein undefiniertes Verhalten aufweisen. Das Programm ist ill-formed, wenn std::remove_pointer_t<T> kein vollständiger Objekttyp ist.
Diese Überladungen nehmen nur an der Overload-Auflösung teil, wenn std::is_const_v<T> false ist.
Inhalt |
[edit] Rückgabewert
1,3) Der Wert des referenzierten Objekts nach der Modifikation.
2,4) Der Wert des referenzierten Objekts vor der Modifikation.
[edit] Hinweise
Im Gegensatz zu den meisten Prä-Inkrement- und Prä-Dekrement-Operatoren geben die Prä-Inkrement- und Prä-Dekrement-Operatoren für atomic_ref keine Referenz auf das modifizierte Objekt zurück. Stattdessen geben sie eine Kopie des gespeicherten Wertes zurück.
[edit] Defect Reports
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 | increment and decrement operators were meaningless for 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) | |
| addiert oder subtrahiert atomar vom referenzierten Wert (öffentliche Memberfunktion) | |
| führt atomar bitweises AND, OR, XOR mit dem referenzierten Wert durch (öffentliche Memberfunktion) |