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)
explicit out_ptr_t ( Smart & sp, Args... args ) ;
(1) (desde C++23)
out_ptr_t ( const out_ptr_t & ) = delete ;
(2) (desde C++23)
1) Crea un out_ptr_t . Adapta sp como si lo vinculara al miembro Smart & , captura cada argumento t en args... como si inicializara el miembro correspondiente de tipo T en Args... con std:: forward < T > ( t ) , luego inicializa por valor el Pointer almacenado.
Luego llama a sp. reset ( ) si la expresión está bien formada; de lo contrario, llama a sp = Smart ( ) si std:: is_default_constructible_v < Smart > es true . El programa está mal formado si ambas operaciones de reinicio están mal formadas.
2) El constructor de copia está explícitamente eliminado. out_ptr_t no es copiable ni movible.

Contenidos

Parámetros

sp - el objeto (normalmente un puntero inteligente) a adaptar
args... - los argumentos utilizados para el reinicio a capturar

Valor de retorno

(ninguno)

Excepciones

Puede lanzar excepciones definidas por la implementación.

Notas

Después de la construcción, el Pointer o el objeto void * apuntado por el valor de retorno de cualquiera de las funciones de conversión es igual a nullptr .

Cada argumento en args... es movido al out_ptr_t creado si es de un tipo objeto, o transferido al out_ptr_t creado tal cual si es de un tipo referencia.

El constructor de out_ptr_t puede lanzar excepciones. Por ejemplo, cuando sp es un std::shared_ptr , la asignación para el nuevo bloque de control puede realizarse dentro del constructor en lugar del destructor.

Ejemplo