exception_ptr
Тип, который описывает указатель на исключение.
typedef unspecified exception_ptr;
Заметки
Неуказанный внутренний класс, используемый для реализации типа exception_ptr.
Используйте объект exception_ptr для ссылки на текущее исключение или экземпляр указанного пользователем исключения. В реализации Майкрософт исключение представлено структурой EXCEPTION_RECORD. Каждый объект exception_ptr содержит поле ссылки на исключение, указывающее на копию структуры EXCEPTION_RECORD, представляющую исключение.
При объявлении переменной exception_ptr эта переменная не связана ни с одним исключением. То есть в поле ссылки на исключение находится значение NULL. Такой объект exception_ptr называется exception_ptr null.
Используйте функцию current_exception или make_exception_ptr для назначения исключения объекту exception_ptr. При назначении исключения переменной exception_ptr поле ссылки на исключение переменной указывает на копию исключения. При нехватке памяти для копирования исключения поле ссылки на исключение указывает на копию исключения std::bad_alloc. Если функция current_exception или make_exception_ptr не может скопировать исключение по какой-либо другой причине, эта функция вызывает функцию terminate (CRT), чтобы выйти из текущего процесса.
Несмотря на свое имя, объект exception_ptr не является указателем. Он не повинуется семантике указателя и не может использоваться с операторами доступа к членам указателей (->) или косвенного обращения (*). Объект exception_ptr не имеет открытых данных-членов и функций-членов.
Сравнения:
Можно использовать операторы равенства (==) и неравенства (!=) для сравнения двух объектов exception_ptr. Эти операторы не сравнивают бинарное значение (битовый шаблон) структур EXCEPTION_RECORD, которые представляют исключения. Вместо этого операторы сравнивают адреса в поле ссылки на исключение объектов exception_ptr. Поэтому exception_ptr со значением null и значение NULL при сравнении считаются равными.