Я написал следующую программу:
// Example program
#include <iostream>
#include <string>
#include <exception>
struct A {
A() {
std::cout << "A ctor" << std::endl;
}
~A() {
std::cout << "A dtor" << std::endl;
try {
throw std::exception();
} catch (std::exception &e) {
std::cout << "Internal exception caught" << std::endl;
}
}
};
int main()
{
try {
A a;
throw std::exception();
} catch (std::exception &e) {
std::cout << "External exception caught" << std::endl;
}
}
Ожидаемый результат:
A ctor
A dtor
Internal exception caught
External exception caught
И это то, что я получаю в GCC. Но когда я использую Visual Studio (версия 2013), вывод, который я получаю, это:
A ctor
External exception caught
Что здесь происходит?