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 ( ) ;
(desde C++23)

Restablece el objeto adaptado Smart mediante el valor del objeto modificado Pointer (o el objeto void * si se ha llamado a operator void ** ( ) ) y los argumentos capturados.

Sea

  • s denota el objeto Smart adaptado,
  • args... denota los argumentos capturados,
  • p denota el valor almacenado de Pointer , o static_cast < Pointer > ( * operator void ** ( ) ) si operator void ** ha sido llamado,
  • SP será
    • Smart :: pointer , si es válido y denota un tipo, de lo contrario,
    • Smart :: element_type * , si Smart :: element_type es válido y denota un tipo, de lo contrario,
    • std:: pointer_traits < Smart > :: element_type * , si std:: pointer_traits < Smart > :: element_type es válido y denota un tipo, de lo contrario,
    • Pointer .

Si s. reset ( static_cast < SP > ( p ) , std:: forward < Args > ( args ) ... ) está bien formado, el destructor realiza

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

de lo contrario, si std:: is_constructible_v < Smart, SP, Args... > es true , el destructor realiza

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

de lo contrario, el programa está mal formado.

Notas

Si Smart es una especialización de std::shared_ptr , la implementación puede asignar el almacenamiento para el nuevo bloque de control durante la construcción, con el fin de dejar las operaciones que no lanzan excepciones al destructor.

Los argumentos capturados por valor se destruyen después de reiniciar.