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

From cppreference.com

template < class Fn >
explicit scope_success ( Fn && fn ) noexcept ( /*see below*/ ) ;
(1) (library fundamentals TS v3)
scope_success ( scope_success && other ) noexcept ( /*see below*/ ) ;
(2) (library fundamentals TS v3)
scope_success ( const scope_success & ) = delete ;
(3) (library fundamentals TS v3)

Creates a scope_success from a function, a function object or another scope_success .

1) Initializes the exit function with a function or function object, and initializes the counter of uncaught exceptions as if with std:: uncaught_exceptions ( ) . The constructed scope_success is active.
If Fn is not an lvalue reference type and std:: is_nothrow_constructible_v < EF, Fn > is true , the stored EF is initialized with std:: forward < Fn > ( fn ) ; otherwise it is initialized with fn .
This overload participates in overload resolution only if std:: is_same_v < std:: remove_cvref_t < Fn > , scope_success > is false and std:: is_constructible_v < EF, Fn > is true .
The program is ill-formed if function call expression fn ( ) is ill-formed.
The behavior is undefined if calling fn ( ) results in undefined behavior, even if fn has not been called.
2) Move constructor. Initializes the stored EF with the one in other , and initializes the counter of uncaught exceptions with the one in other . The constructed scope_success is active if and only if other is active before the construction.
If std:: is_nothrow_move_constructible_v < EF > is true , initializes stored EF (denoted by exitfun ) with std:: forward < EF > ( other. exitfun ) , otherwise initializes it with other. exitfun .
After successful move construction, other. release ( ) is called and other becomes inactive.
This overload participates in overload resolution only if std:: is_nothrow_move_constructible_v < EF > is true or std:: is_copy_constructible_v < EF > is true .
The behavior is undefined if
3) scope_success is not CopyConstructible .

Parameters

fn - function or function object used for initializing the stored EF
other - scope_success to move from

Exceptions

Any exception thrown during the initialization of the stored EF .

1)
noexcept specification:

Example

See also

( removed in C++20* ) (C++17)
checks if exception handling is currently in progress
(function)
makes the scope_success inactive
(public member function)