Namensräume
Varianten
Aktionen

std::atomic_ref<T>::operator++,++(int),--,--(int)

Von cppreference.com
< cpp‎ | atomic‎ | atomic ref
 
 
Bibliothek für nebenläufige Programmierung
Threads
(C++11)
(C++20)
this_thread Namespace
(C++11)
(C++11)
(C++11)
Kooperatives Beenden
Gegenseitiger Ausschluss
(C++11)
Allgemeines Sperrungsmanagement
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Bedingungsvariablen
(C++11)
Semaphoren
Latches und Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Sichere Wiederherstellung
(C++26)
Hazard Pointer
Atomare Typen
(C++11)
(C++20)
Initialisierung von atomaren Typen
(C++11)(veraltet in C++20)
(C++11)(veraltet in C++20)
Speicherordnung
(C++11)(deprecated in C++26)
Freie Funktionen für atomare Operationen
Freie Funktionen für atomare Flags
 
 
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) [bearbeiten]
subtrahiert atomar das Argument vom Wert, der im referenzierten Objekt gespeichert ist, und gibt den zuvor gehaltenen Wert zurück
(öffentliche Memberfunktion) [bearbeiten]
addiert oder subtrahiert atomar vom referenzierten Wert
(öffentliche Memberfunktion) [bearbeiten]
führt atomar bitweises AND, OR, XOR mit dem referenzierten Wert durch
(öffentliche Memberfunktion) [bearbeiten]