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
         |