exception_ptr
Um tipo que descreve um ponteiro para uma exceção.
typedef unspecified exception_ptr;
Comentários
Uma classe interna não especificada que é usada para implementar o tipo exception_ptr.
Use um objeto exception_ptr para fazer referência à exceção atual ou a uma instância de uma exceção especificada pelo usuário. Na implementação da Microsoft, uma exceção é representada por uma estrutura EXCEPTION_RECORD. Cada objeto exception_ptr inclui um campo de referência de exceção que aponta para uma cópia da estrutura EXCEPTION_RECORD que representa a exceção.
Quando você declara uma variável exception_ptr, ela não é associada a nenhuma exceção. Isto é, o campo de referência de exceção é NULL. Esse objeto exception_ptr é chamado de null exception_ptr.
Use a função current_exception ou make_exception_ptr para atribuir uma exceção a um objeto exception_ptr. Quando você atribui uma exceção a uma variável exception_ptr, o campo de referência de exceção da variável aponta para uma cópia da exceção. Se não houver memória suficiente para copiar a exceção, o campo de referência de exceção apontará para uma cópia de uma exceção std::bad_alloc. Se a função current_exception ou make_exception_ptr não puder copiar a exceção por qualquer outro motivo, a função chamará a função terminate (CRT) para encerrar o processo atual.
Apesar do nome, um objeto exception_ptr não é, em si, um ponteiro. Ele não obedece à semântica do ponteiro e não pode ser usado com o acesso do membro do ponteiro (->) ou operadores (*) de indireção. O objeto exception_ptr não tem membros de dados públicos ou funções de membro.
Comparações:
Você pode usar os operadores igual (==) e diferente (!=) para comparar dois objetos exception_ptr. Os operadores não comparam o valor binário (padrão de bit) das estruturas EXCEPTION_RECORD que representam as exceções. Em vez disso, os operadores comparam os endereços no campo de referência de exceção dos objetos exception_ptr. Consequentemente, um exception_ptr nulo e o valor NULL são comparados como iguais.