Namespaces
Variants

std::experimental::scope_fail<EF>:: scope_fail

From cppreference.net

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

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

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

Содержание

Параметры

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

Исключения

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

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

Пример

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

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