在这个问题上,Clang和GCC存在不同的看法:
使用g ++时,将打印“result2”,但是使用clang ++时将打印“result1”。
我知道g ++认为由g()
抛出的A
与main.cpp中的A
不同。
但是,clang++是否有任何问题?
版本信息:
g ++:7.4.0
clang:10.0.0
main.cpp:
#include <iostream>
namespace {
struct A {};
}
extern void g();
int main()
{
try {
try {
g();
} catch (A) {std::cout << "result1\n";}
} catch (...) {std::cout << "result2\n";}
}
other.cpp:
namespace {
struct A {};
}
void g() { throw A(); }