Namespaces
Variants

std::experimental::scope_success<EF>:: scope_success

From cppreference.net

template < class Fn >
explicit scope_success ( Fn && fn ) noexcept ( /*siehe unten*/ ) ;
(1) (Library Fundamentals TS v3)
scope_success ( scope_success && other ) noexcept ( /*siehe unten*/ ) ;
(2) (Library Fundamentals TS v3)
scope_success ( const scope_success & ) = delete ;
(3) (Library Fundamentals TS v3)

Erstellt einen scope_success aus einer Funktion, einem Funktionsobjekt oder einem anderen scope_success .

1) Initialisiert die Exit-Funktion mit einer Funktion oder einem Funktionsobjekt und initialisiert den Zähler für nicht abgefangene Ausnahmen als ob mit std:: uncaught_exceptions ( ) . Das konstruierte scope_success ist aktiv.
Wenn Fn kein Lvalue-Referenztyp ist und std:: is_nothrow_constructible_v < EF, Fn > true ist, wird das gespeicherte EF mit std:: forward < Fn > ( fn ) initialisiert; andernfalls wird es mit fn initialisiert.
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn std:: is_same_v < std:: remove_cvref_t < Fn > , scope_success > gleich false ist und std:: is_constructible_v < EF, Fn > gleich true ist.
Das Programm ist fehlerhaft, wenn der Funktionsaufrufausdruck fn ( ) fehlerhaft ist.
Das Verhalten ist undefiniert, wenn der Aufruf von fn ( ) zu undefiniertem Verhalten führt, selbst wenn fn nicht aufgerufen wurde.
2) Move-Konstruktor. Initialisiert den gespeicherten EF mit dem aus other und initialisiert den Zähler für nicht abgefangene Ausnahmen mit dem aus other . Das konstruierte scope_success ist aktiv genau dann, wenn other vor der Konstruktion aktiv war.
Wenn std:: is_nothrow_move_constructible_v < EF > true ist, initialisiert den gespeicherten EF (bezeichnet als exitfun ) mit std:: forward < EF > ( other. exitfun ) , andernfalls initialisiert es ihn mit other. exitfun .
Nach erfolgreichem Move-Konstruktor wird other. release ( ) aufgerufen und other wird inaktiv.
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn std:: is_nothrow_move_constructible_v < EF > true ist oder std:: is_copy_constructible_v < EF > true ist.
Das Verhalten ist undefiniert, falls
3) scope_success ist nicht CopyConstructible .

Inhaltsverzeichnis

Parameter

fn - Funktion oder Funktionsobjekt zur Initialisierung des gespeicherten EF
other - scope_success von dem verschoben wird

Ausnahmen

Jede Ausnahme, die während der Initialisierung des gespeicherten EF geworfen wird.

1)
noexcept Spezifikation:

Beispiel

Siehe auch

( removed in C++20* ) (C++17)
prüft, ob aktuell eine Ausnahmebehandlung stattfindet
(Funktion)
macht den scope_success inaktiv
(öffentliche Member-Funktion)