std::experimental::scope_fail<EF>:: scope_fail
From cppreference.net
<
cpp
|
experimental
|
scope fail
|
template
<
class
Fn
>
explicit scope_fail ( Fn && fn ) noexcept ( /*voir ci-dessous*/ ) ; |
(1) | (bibliothèque fundamentals TS v3) |
|
scope_fail
(
scope_fail
&&
other
)
noexcept
(
/*voir ci-dessous*/
)
;
|
(2) | (bibliothèque fundamentals TS v3) |
|
scope_fail
(
const
scope_fail
&
)
=
delete
;
|
(3) | (bibliothèque fundamentals TS v3) |
Crée un
scope_fail
à partir d'une fonction, d'un objet fonction ou d'un autre
scope_fail
.
1)
Initialise la fonction de sortie avec une fonction ou un objet fonction, et initialise le compteur d'exceptions non capturées comme si avec
std::
uncaught_exceptions
(
)
. Le
scope_fail
construit est actif.
Si
Fn
n'est pas un type référence lvalue et que
std::
is_nothrow_constructible_v
<
EF, Fn
>
est
true
, le
EF
stocké est initialisé avec
std::
forward
<
Fn
>
(
fn
)
; sinon il est initialisé avec
fn
.
Si l'initialisation du stocké
EF
lève une exception, appelle
fn
(
)
.
Cette surcharge participe à la résolution de surcharge seulement si
std::
is_same_v
<
std::
remove_cvref_t
<
Fn
>
, scope_fail
>
est
false
et
std::
is_constructible_v
<
EF, Fn
>
est
true
.
Le programme est mal formé si l'expression d'appel de fonction
fn
(
)
est mal formée.
Le comportement est indéfini si l'appel de
fn
(
)
lève une exception ou entraîne un comportement indéfini, même si
fn
n'a pas été appelé.
2)
Constructeur de déplacement. Initialise le
EF
stocké avec celui de
other
, et initialise le compteur d'exceptions non capturées avec celui de
other
. Le
scope_fail
construit est actif si et seulement si
other
était actif avant la construction.
Si
std::
is_nothrow_move_constructible_v
<
EF
>
est
true
, initialise l'
EF
stocké (désigné par
exitfun
) avec
std::
forward
<
EF
>
(
other.
exitfun
)
, sinon l'initialise avec
other.
exitfun
.
Après une construction par déplacement réussie,
other.
release
(
)
est appelée et
other
devient inactif.
Cette surcharge participe à la résolution de surcharge uniquement si
std::
is_nothrow_move_constructible_v
<
EF
>
est
true
ou
std::
is_copy_constructible_v
<
EF
>
est
true
.
Le comportement est indéfini si
-
std::
is_nothrow_move_constructible_v
<
EF
>
est
true
et
EFne satisfait pas aux exigences de MoveConstructible , ou -
std::
is_nothrow_move_constructible_v
<
EF
>
est
false
et
EFne satisfait pas aux exigences de CopyConstructible .
Table des matières |
Paramètres
| fn | - |
fonction ou objet fonction utilisé pour initialiser le
EF
stocké
|
| other | - |
scope_fail
à déplacer
|
Exceptions
Toute exception levée durant l'initialisation du
EF
stocké.
1)
noexcept
spécification :
noexcept
(
std::
is_nothrow_constructible_v
<
EF, Fn
>
||
std:: is_nothrow_constructible_v < EF, Fn & > )
std:: is_nothrow_constructible_v < EF, Fn & > )
2)
noexcept
spécification :
noexcept
(
std::
is_nothrow_move_constructible_v
<
EF
>
||
std:: is_nothrow_copy_constructible_v < EF > )
std:: is_nothrow_copy_constructible_v < EF > )
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
(
removed in C++20*
)
(C++17)
|
vérifie si la gestion d'exception est actuellement en cours
(fonction) |
rend le
scope_fail
inactif
(fonction membre publique) |