Namespaces
Variants

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

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 integraler Typ außer cv bool oder ein Objektzeigertyp 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)

Erhöht oder verringert atomar den aktuellen Wert des referenzierten Objekts. Diese Operationen sind Read-Modify-Write-Operationen.

1) Führt atomares Prä-Inkrement aus. Entspricht return fetch_add ( 1 ) + 1 ; .
2) Führt atomares Post-Inkrement durch. Entspricht return fetch_add ( 1 ) ; .
3) Führt atomares Prä-Dekrement aus. Entspricht return fetch_sub ( 1 ) - 1 ;
4) Führt atomares Post-Dekrement aus. Entspricht return fetch_sub ( 1 ) ; .
  • Für vorzeichenbehaftete Ganzzahltypen ist die Arithmetik als Zweierkomplementdarstellung definiert. Es gibt keine undefinierten Ergebnisse.
  • Für Zeiger-auf-Objekt-Typen kann das Ergebnis eine undefinierte Adresse sein, aber die Operationen haben ansonsten kein undefiniertes Verhalten. Das Programm ist fehlerhaft, wenn std:: remove_pointer_t < T > kein vollständiger Objekttyp ist.

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

Inhaltsverzeichnis

Rückgabewert

1,3) Der Wert des referenzierten Objekts nach der Änderung.
2,4) Der Wert des referenzierten Objekts vor der Modifikation.

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. Sie geben stattdessen 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 Korrigiertes Verhalten
LWG 3508
( P3323R1 )
C++20 Inkrement- und Dekrementoperatoren 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)
addiert oder subtrahiert atomar vom referenzierten Wert
(öffentliche Elementfunktion)
führt atomare bitweise UND-, ODER- und XOR-Operationen mit dem referenzierten Wert durch
(öffentliche Elementfunktion)