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

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
(шаблон класса)[править]
close