std::atomic_ref<T>:: fetch_sub
              
  | 
             
              
  | 
            |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
           
           Fourni uniquement lorsque
            
         
            T
           
           est un type arithmétique autre que
           
            cv
           
           
            
             bool
            
           
           ou un type pointeur-vers-objet
           | 
         ||
| 
           
           
            value_type fetch_sub
            
             (
            
            difference_type arg,
             
         
             
              
               std::
               
                memory_order
               
              
             
             order
             
              =
             
               | 
         (constexpr depuis C++26) | |
Remplace atomiquement la valeur actuelle de l'objet référencé par le résultat de la soustraction 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 l'environnement de virgule flottante 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 la soustraction arithmétique | 
| order | - | 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_sub
         
         n'avait aucun sens pour
         
          
           const
          
          T
         
         | 
        
         contraint pour n'accepter que les
         
          T
         
         non constants
         |