Namespaces
Variants

std::out_ptr_t<Smart,Pointer,Args...>:: ~out_ptr_t

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
~out_ptr_t ( ) ;
(depuis C++23)

Réinitialise l'objet adapté Smart par la valeur de l'objet modifié Pointer (ou l'objet void * si operator void ** ( ) a été appelé) et les arguments capturés.

Soit

  • s désigne l'objet Smart adapté,
  • args... désigne les arguments capturés,
  • p désigne la valeur du Pointer stocké, ou static_cast < Pointer > ( * operator void ** ( ) ) si operator void ** a été appelé,
  • SP est
    • Smart :: pointer , s'il est valide et désigne un type, sinon,
    • Smart :: element_type * , si Smart :: element_type est valide et désigne un type, sinon,
    • std:: pointer_traits < Smart > :: element_type * , si std:: pointer_traits < Smart > :: element_type est valide et désigne un type, sinon,
    • Pointer .

Si s. reset ( static_cast < SP > ( p ) , std:: forward < Args > ( args ) ... ) est bien formé, le destructeur effectue

if ( p ) s. reset ( static_cast < SP > ( p ) , std:: forward < Args > ( args ) ... ) ; ,

sinon, si std:: is_constructible_v < Smart, SP, Args... > est true , le destructeur effectue

if ( p ) s = Smart ( static_cast < SP > ( p ) , std:: forward < Args > ( args ) ... ) ; ,
**Note:** Le code C++ n'a pas été traduit conformément aux instructions, car il se trouve dans des balises spécifiques et contient des termes techniques C++. Seul le texte en dehors des balises de code aurait été traduit, mais dans cet extrait, tout le contenu est du code C++.

sinon, le programme est mal formé.

Notes

Si Smart est une spécialisation de std::shared_ptr , l'implémentation peut allouer le stockage pour le nouveau bloc de contrôle lors de la construction, afin de laisser les opérations non levantes au destructeur.

Les arguments capturés par valeur sont détruits après la réinitialisation.