Namespaces
Variants

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

From cppreference.net

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)

Создает scope_success из функции, функционального объекта или другого scope_success .

1) Инициализирует функцию выхода функцией или функциональным объектом, и инициализирует счетчик неперехваченных исключений как если бы с помощью std:: uncaught_exceptions ( ) . Сконструированный scope_success является активным.
Если Fn не является типом lvalue-ссылки и std:: is_nothrow_constructible_v < EF, Fn > равно true , то сохранённый EF инициализируется с помощью std:: forward < Fn > ( fn ) ; иначе он инициализируется с помощью fn .
Эта перегрузка участвует в разрешении перегрузки только если std:: is_same_v < std:: remove_cvref_t < Fn > , scope_success > равно false и std:: is_constructible_v < EF, Fn > равно true .
Программа является некорректной, если выражение вызова функции fn ( ) является некорректным.
Поведение не определено, если вызов fn ( ) приводит к неопределённому поведению, даже если fn не был вызван.
2) Конструктор перемещения. Инициализирует хранимый EF значением из other и инициализирует счетчик неперехваченных исключений значением из other . Сконструированный scope_success активен тогда и только тогда, когда other был активен до конструирования.
Если std:: is_nothrow_move_constructible_v < EF > равно true , инициализирует сохранённый EF (обозначаемый как exitfun ) с помощью std:: forward < EF > ( other. exitfun ) , иначе инициализирует его с помощью other. exitfun .
После успешного перемещающего конструирования, other. release ( ) вызывается и other становится неактивным.
Эта перегрузка участвует в разрешении перегрузки только если std:: is_nothrow_move_constructible_v < EF > равно true или std:: is_copy_constructible_v < EF > равно true .
Поведение не определено, если
3) scope_success не является CopyConstructible .

Содержание

Параметры

fn - функция или функциональный объект, используемый для инициализации хранимого EF
other - scope_success для перемещения из

Исключения

Любое исключение, выброшенное во время инициализации сохраненного EF .

1)
noexcept спецификация:

Пример

Смотрите также

( removed in C++20* ) (C++17)
проверяет, выполняется ли в данный момент обработка исключений
(функция)
делает scope_success неактивным
(публичная функция-член)