std::atomic_ref<T>:: fetch_sub
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Nur bereitgestellt, wenn
T
ein arithmetischer Typ außer
cv
bool
oder ein Zeiger-auf-Objekt-Typ ist
|
||
|
value_type fetch_sub
(
difference_type arg,
std::
memory_order
order
=
|
(constexpr seit C++26) | |
Ersetzt atomar den aktuellen Wert des referenzierten Objekts mit dem Ergebnis der arithmetischen Subtraktion des Werts und arg . Dieser Vorgang ist ein Lese-Modifizieren-Schreiben-Vorgang. Der Speicher wird gemäß dem Wert von order beeinflusst.
- Für vorzeichenbehaftete Ganzzahltypen ist die Arithmetik als Zweierkomplementdarstellung definiert. Es gibt keine undefinierten Ergebnisse.
- Für Gleitkommatypen kann die Gleitkommaumgebung 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.
-
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 fehlerhaft.
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn std:: is_const_v < T > false ist.
Inhaltsverzeichnis |
Parameter
| arg | - | das andere Argument der arithmetischen Subtraktion |
| order | - | Speicherreihenfolgenbeschränkungen zur Durchsetzung |
Rückgabewert
Der von
*
ptr
referenzierte Wert, unmittelbar vor den Effekten dieser Funktion.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
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 |
fetch_sub
war bedeutungslos für
const
T
|
eingeschränkt, um nur non-const
T
zu akzeptieren
|