Espacios de nombres
Variantes

std::inout_ptr_t<Smart,Pointer,Args...>::inout_ptr_t

De cppreference.com
 
 
Biblioteca de servicios
Apoyo del lenguaje
Apoyo de tipos (tipos básicos, RTTI)
Macros de prueba de característica de la biblioteca (C++20)
Servicios de programa
Funciones variádicas
Apoyo de corrutinas (C++20)
Apoyo de contratos (C++26)
Comparación de tres vías (C++20)
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

 
Gestión de memoria dinámica
Punteros inteligentes
(C++11)
(C++11)
(C++11)
(hasta C++17)
(C++11)
(C++23)
Asignadores de memoria
Recursos de memoria
Almacenamiento no inicializado
Algoritmos de memoria no inicializada
Algoritmos restringidos de memoria no inicializada
Apoyo para recolección de basura
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
Misceláneos
(C++20)
(C++11)
(C++11)
 
 
explicit inoout_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 vinculara al miembro Smart& captura todos los argumentos t en args... como si los inicializara con el miembro correspondiente de tipo T en Args... con std::forward<T>(t), luego inicializa el objeto Pointer almacenado con sp si Smart es un tipo puntero; de lo contrario, lo inicializa con sp.get(). Se puede llamar a sp.release() si Smart no es un tipo puntero, en cuyo caso no se volverá a llamar dentro del destructor.
2) El constructor de copia se elimina explícitamente. inout_ptr_t no se puede copiar ni mover.

Parámetros

sp - El objeto (típicamente un puntero inteligente) a adaptar.
args... - Los argumentos utilizados a capturar para el restablecimiento.

Valor de retorno

(Ninguno)

Excepciones

Puede lanzar excepciones definidas por la implementación.

Notas

Si Smart no es un tipo puntero y el constructor no llama a sp.release(), el destructor puede llamarlo antes de restablecer sp.

Cada argumento en args... se mueve al inout_ptr_t creado si es de un tipo objeto, o se transfiere 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 del nuevo bloque de control puede realizarse dentro del constructor en lugar del destructor.

Ejemplo