std::atomic_ref<T>::fetch_add
Von cppreference.com
< cpp | atomic | atomic ref
| Nur bereitgestellt, wenn T ein arithmetischer Typ außer cv bool oder ein Zeigertyp auf ein Objekt ist |
||
value_type fetch_add( difference_type arg, std::memory_order order = |
(constexpr seit C++26) | |
Ersetzt atomar den aktuellen Wert, auf den *ptr verweist, durch das Ergebnis der arithmetischen Addition des Wertes und arg. Diese Operation ist eine Lese-Modifizierungs-Schreib-Operation. Der Speicher wird gemäß dem Wert von order beeinflusst.
- 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 Überladung nimmt nur an der Überladungsauflösung teil, wenn std::is_const_v<T> false ist.
Inhalt |
[bearbeiten] Parameter
| arg | - | das andere Argument der arithmetischen Addition |
| Reihenfolge | - | Speicherreihenfolgebeschränkungen, die durchgesetzt werden sollen |
[bearbeiten] Rückgabewert
Der Wert, auf den *ptr verweist, unmittelbar vor den Effekten dieser Funktion.
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] 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_add war für const T bedeutungslos |
constrained to accept only non-const T |