exception_ptr
例外へのポインターを表す型。
typedef unspecified exception_ptr;
解説
exception_ptr 型を実装するために使用される未指定の内部クラス。
現在の例外またはユーザーが指定した例外のインスタンスを参照するには、exception_ptr オブジェクトを使用します。 Microsoft の実装では、例外は EXCEPTION_RECORD 構造体によって表されます。 各 exception_ptr オブジェクトには、例外を表す EXCEPTION_RECORD 構造体のコピーを指す例外参照フィールドが含まれています。
exception_ptr 変数を宣言する場合、変数は例外に関連付けられません。 つまり、例外参照フィールドが NULL です。 このような exception_ptr オブジェクトは、null exception_ptr と呼ばれます。
例外を current_exception オブジェクトに割り当てるには、make_exception_ptr または exception_ptr 関数を使用します。
exception_ptr 変数に例外を割り当てた場合、変数の例外参照フィールドは例外のコピーを指します。 例外をコピーするためのメモリが不足している場合、例外参照フィールドは、std::bad_alloc 例外のコピーを指し示します。
current_exception 関数または make_exception_ptr 関数が他の理由で例外をでコピーできない場合、この関数は、現在のプロセスを終了する terminate CRT 関数を呼び出します。
名前とは異なり、exception_ptr オブジェクト自体はポインターではありません。 ポインター のセマンティクスに従わず、ポインター メンバー アクセス (->) または間接 (*) 演算子では使用できません。
exception_ptr オブジェクトには、パブリック データ メンバーまたはメンバー関数がありません。
比較:
equal (==) 演算子と not-equal (!=) 演算子を使用して、2 つの exception_ptr オブジェクトを比較できます。 演算子は、例外を表す EXCEPTION_RECORD 構造体のバイナリ値 (ビット パターン) は比較しません。 代わりに、演算子は exception_ptr オブジェクトの例外参照フィールドのアドレスを比較します。 その結果、null exception_ptr と NULL 値を比較すると、等しいと評価されます。
terminate_handler
この型は、terminate_handler として使用するのに適した関数へのポインターを表します。
typedef void (*terminate_handler)();
解説
この型は、終了ハンドラーとして使用するのに適した関数へのポインターを表します。
例
の使用例については、「terminate_handler」を参照してください。
unexpected_handler
この型は、unexpected_handler として使用するのに適した関数へのポインターを表します。
typedef void (*unexpected_handler)();