std::inout_ptr_t<Smart,Pointer,Args...>::inout_ptr_t
De cppreference.com
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
| Esta sección está incompleta Razón: sin ejemplo |