std::inout_ptr_t<Smart,Pointer,Args...>:: inout_ptr_t
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
inout_ptr_t::inout_ptr_t
|
||||
| Non-member functions | ||||
|
explicit
inout_ptr_t
(
Smart
&
sp, Args...
args
)
;
|
(1) | (desde C++23) |
|
inout_ptr_t
(
const
inout_ptr_t
&
)
=
delete
;
|
(2) | (desde C++23) |
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.
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
|
Esta sección está incompleta
Razón: sin ejemplo |