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