関数が有効な例外リストにない例外をスローした場合の標準的な動作は何ですか? たとえば、このコードを実行すると:
#include <iostream>
#include <cstdlib>
using namespace std;
void NotLegal() throw(char) {
    throw 42;
}
void myunexpected () {
  cout << "exception not in list\n";
  cin.get();
  exit(0);
}
int main()
{
    set_unexpected(myunexpected);
    try {
       NotLegal();
   }
   catch(...) {
       cout << "exception catched";
       cin.get();
   }
   return 0;
}
GCC と Visual Studio C++ コンパイラでは動作が異なります。
- VS 2010 では、予期しない例外が一般的な例外ハンドラーでキャッチされます。
- GCCunexpected()では、例外をキャッチする代わりにハンドラー関数が呼び出されます。
この違いはなぜですか?unexpected()MS C++ コンパイラがcallbackを呼び出さないのはなぜですか?