std::experimental::scope_exit<EF>:: scope_exit
From cppreference.net
<
cpp
|
experimental
|
scope exit
|
template
<
class
Fn
>
explicit scope_exit ( Fn && fn ) noexcept ( /*see below*/ ) ; |
(1) | (TS de bibliotecas fundamentales v3) |
|
scope_exit
(
scope_exit
&&
other
)
noexcept
(
/*see below*/
)
;
|
(2) | (TS de bibliotecas fundamentales v3) |
|
scope_exit
(
const
scope_exit
&
)
=
delete
;
|
(3) | (TS de bibliotecas fundamentales v3) |
Crea un
scope_exit
a partir de una función, un objeto función u otro
scope_exit
.
1)
Inicializa la función de salida con una función u objeto función. El
scope_exit
construido está activo.
Si
Fn
no es un tipo de referencia lvalue y
std::
is_nothrow_constructible_v
<
EF, Fn
>
es
true
, el
EF
almacenado se inicializa con
std::
forward
<
Fn
>
(
fn
)
; de lo contrario se inicializa con
fn
.
Si la inicialización del almacenado
EF
lanza una excepción, llama a
fn
(
)
.
Esta sobrecarga participa en la resolución de sobrecarga solo si
std::
is_same_v
<
std::
remove_cvref_t
<
Fn
>
, scope_exit
>
es
false
y
std::
is_constructible_v
<
EF, Fn
>
es
true
.
El programa está mal formado si la expresión de llamada a función
fn
(
)
está mal formada.
El comportamiento es indefinido si llamar a
fn
(
)
lanza una excepción o resulta en comportamiento indefinido, incluso si
fn
no ha sido llamado.
2)
Constructor de movimiento. Inicializa el
EF
almacenado con el de
other
. El
scope_exit
construido está activo si y solo si
other
estaba activo antes de la construcción.
Si
std::
is_nothrow_move_constructible_v
<
EF
>
es
true
, inicializa el
EF
almacenado (denotado por
exitfun
) con
std::
forward
<
EF
>
(
other.
exitfun
)
, de lo contrario lo inicializa con
other.
exitfun
.
Después de una construcción por movimiento exitosa,
other.
release
(
)
es llamado y
other
se vuelve inactivo.
Esta sobrecarga participa en la resolución de sobrecarga solo si
std::
is_nothrow_move_constructible_v
<
EF
>
es
true
o
std::
is_copy_constructible_v
<
EF
>
es
true
.
El comportamiento es indefinido si
-
std::
is_nothrow_move_constructible_v
<
EF
>
es
true
y
EFno cumple con los requisitos de MoveConstructible , o -
std::
is_nothrow_move_constructible_v
<
EF
>
es
false
y
EFno cumple con los requisitos de CopyConstructible .
Contenidos |
Parámetros
| fn | - |
función u objeto de función utilizado para inicializar el
EF
almacenado
|
| other | - |
scope_exit
del cual mover
|
Excepciones
Cualquier excepción lanzada durante la inicialización del
EF
almacenado.
1)
noexcept
especificación:
noexcept
(
std::
is_nothrow_constructible_v
<
EF, Fn
>
||
std:: is_nothrow_constructible_v < EF, Fn & > )
std:: is_nothrow_constructible_v < EF, Fn & > )
2)
noexcept
especificación:
noexcept
(
std::
is_nothrow_move_constructible_v
<
EF
>
||
std:: is_nothrow_copy_constructible_v < EF > )
std:: is_nothrow_copy_constructible_v < EF > )
Ejemplo
|
Esta sección está incompleta
Motivo: sin ejemplo |
Véase también
hace que el
scope_exit
sea inactivo
(función miembro pública) |