Пространства имён
Варианты
Действия

std::experimental::scope_fail

Материал из cppreference.com
 
 
Технические спецификации
Библиотека файловой системы (ТС файловой системы)
Основы библиотеки (ТС основ библиотеки)
Основы библиотеки 2 (ТС основ библиотеки v2)
Основы библиотеки 3 (ТС основы библиотеки v3)
Расширения для параллелизма (ТС параллелизма)
Расширения для параллелизма 2 (ТС параллелизма v2)
Расширения для конкуренции 2 (ТС конкуренции v2)
Концепты (ТС концепций)
Диапазоны (ТС диапазонов)
Рефлексия (ТС рефлексии)
Специальные математические функции (ТО специальные функции)
 
 
std::experimental::scope_fail
 
Определено в заголовочном файле <experimental/scope>
template<class EF>
class scope_fail;
(ТС основы библиотеки v3)

Шаблон класса scope_fail представляет собой средство защиты области видимости общего назначения, предназначенное для вызова своей функции выхода, когда область видимости завершилась через исключение.

scope_fail не CopyConstructible, CopyAssignable или MoveAssignable, однако он может быть MoveConstructible, если EF соответствует некоторым требованиям, что позволяет заключить scope_fail в другой объект.

scope_fail может быть активным, т.е. вызывать функцию выхода при уничтожении, или неактивным, т.е. ничего не делать при уничтожении. scope_fail активен после создания из функции выхода.

scope_fail может стать неактивным, при вызове для него release() вручную или автоматически (конструктором перемещения). Неактивный scope_fail также может быть получен путём инициализации другим неактивным scope_fail. Если scope_fail неактивен, он не может снова стать активным.

scope_fail эффективно содержит EF и флаг bool, указывающий, активен ли он, вместе со счётчиком неперехваченных исключений, используемым для определения того, вызывается ли деструктор во время раскрутки стека.

Содержание

[править] Параметры шаблона

EF тип сохранённой функции выхода
Требования к типам
-
EF должен быть:
-
Вызов левостороннего значения std::remove_reference_t<EF> без аргументов должен быть правильно сформирован.

[править] Фукции-элементы

создаёт новый scope_fail
(public функция-элемент) [править]
вызывает функцию выхода при выходе из области видимости через исключение, если scope_fail активен, затем уничтожает scope_fail
(public функция-элемент) [править]
operator=
[удалено]
scope_fail не присваиваемый
(public функция-элемент)
Модификаторы
делает scope_fail неактивным
(public функция-элемент) [править]

[править] Принципы вывода

[править] Примечание

Создание scope_fail длительности динамического хранения может привести к неожиданному поведению.

Создание scope_fail, созданного из другого scope_fail созданного в другом потоке, также может привести к неожиданному поведению, поскольку количество неперехваченных исключений, полученных в разных потоках, можно сравнить во время уничтожения.

[править] Пример

[править] Смотрите также

оборачивает объект функцию и вызывает его при выходе из области видимости
(шаблон класса) [править]
обёртывает объект функцию и вызывает его при выходе из области видимости в обычном режиме
(шаблон класса) [править]
средство удаления по умолчанию для unique_ptr
(шаблон класса) [править]