我希望A::~A()在这个程序中被调用,但它不是:
#include <iostream>
struct A {
~A() { std::cout << "~A()" << std::endl; }
};
void f() {
A a;
throw "spam";
}
int main() { f(); }
Run Code Online (Sandbox Code Playgroud)
但是,如果我将最后一行更改为
int main() try { f(); } catch (...) { throw; }
Run Code Online (Sandbox Code Playgroud)
然后A::~A() 被称为.
我正在从Visual Studio 2005编译"Microsoft(R)32位C/C++优化编译器版本14.00.50727.762 for 80x86".命令行是cl /EHa my.cpp.
编译器像往常一样吗?标准对此事有何评价?