std::atomic_ref<T>:: fetch_add
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Fourni uniquement lorsque
T
est un type arithmétique autre que
cv
bool
ou un type pointeur-vers-objet
|
||
|
value_type fetch_add
(
difference_type arg,
std::
memory_order
order
=
|
(constexpr depuis C++26) | |
Remplace atomiquement la valeur actuelle référencée par
*
ptr
par le résultat de l'addition arithmétique de la valeur et
arg
. Cette opération est une opération de lecture-modification-écriture. La mémoire est affectée selon la valeur de
order
.
- Pour les types entiers signés, l'arithmétique est définie pour utiliser la représentation en complément à deux. Il n'y a aucun résultat indéfini.
- Pour les types à virgule flottante, l' environnement de virgule flottante en vigueur peut être différent de celui du thread appelant. L'opération n'a pas besoin de se conformer aux traits correspondants de std::numeric_limits mais est encouragée à le faire. Si le résultat n'est pas une valeur représentable pour son type, le résultat est non spécifié mais l'opération n'a par ailleurs aucun comportement indéfini.
-
Pour les types pointeurs, le résultat peut être une adresse indéfinie, mais l'opération n'a par ailleurs aucun comportement indéfini.
- Si std:: remove_pointer_t < T > n'est pas un type d'objet complet, le programme est mal formé.
Cette surcharge participe à la résolution de surcharge seulement si std:: is_const_v < T > est false .
Table des matières |
Paramètres
| arg | - | l'autre argument de l'addition arithmétique |
| order | - | les contraintes d'ordre mémoire à appliquer |
Valeur de retour
La valeur référencée par
*
ptr
, immédiatement avant les effets de cette fonction.
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
|
LWG 3508
( P3323R1 ) |
C++20 |
fetch_add
n'avait aucun sens pour
const
T
|
contraint pour n'accepter que les
T
non constants
|