std::experimental::scope_fail<EF>:: scope_fail
From cppreference.net
<
cpp
|
experimental
|
scope fail
|
template
<
class
Fn
>
explicit scope_fail ( Fn && fn ) noexcept ( /*ver más abajo*/ ) ; |
(1) | (biblioteca fundamentals TS v3) |
|
scope_fail
(
scope_fail
&&
other
)
noexcept
(
/*ver más abajo*/
)
;
|
(2) | (biblioteca fundamentals TS v3) |
|
scope_fail
(
const
scope_fail
&
)
=
delete
;
|
(3) | (biblioteca fundamentals TS v3) |
Crea un
scope_fail
a partir de una función, un objeto función u otro
scope_fail
.
1)
Inicializa la función de salida con una función u objeto función, e inicializa el contador de excepciones no capturadas como si fuera con
std::
uncaught_exceptions
(
)
. El
scope_fail
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_fail
>
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
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
, e inicializa el contador de excepciones no capturadas con el de
other
. El
scope_fail
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 almacenado
EF
|
| other | - |
scope_fail
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
Razón: sin ejemplo |
Véase también
|
(
removed in C++20*
)
(C++17)
|
verifica si el manejo de excepciones está actualmente en progreso
(función) |
hace que el
scope_fail
se inactive
(función miembro pública) |