Namespaces
Variants

std::inout_ptr_t<Smart,Pointer,Args...>:: inout_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 inout_ptr_t ( Smart & sp, Args... args ) ;
(1) (desde C++23)
inout_ptr_t ( const inout_ptr_t & ) = delete ;
(2) (desde C++23)
1) Crea un inout_ptr_t . Adapta sp como si lo enlazara 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 el Pointer almacenado con sp si Smart es un tipo puntero, de lo contrario, lo inicializa con sp. get ( ) . sp. release ( ) puede ser llamado si Smart no es un tipo puntero, en cuyo caso no será llamado nuevamente dentro del destructor.
2) El constructor de copia está explícitamente eliminado. inout_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

Si Smart no es un tipo puntero y sp. release ( ) no es llamado por el constructor, puede ser llamado por el destructor antes de reiniciar sp .

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

El constructor de inout_ptr_t puede lanzar excepciones. Por ejemplo, cuando sp es un puntero intrusivo con un bloque de control, la asignación para el nuevo bloque de control puede realizarse dentro del constructor en lugar del destructor.

Ejemplo