Clang и G CC имеют разное мнение по этой проблеме:
С g ++ выводится «result2», но с clang ++ это «result1».
Я знаю, что g ++ думает, что A
, брошенный g()
, не тот же самый A
является основным. cpp.
Но есть ли что-то не так с clang ++?
версия:
g ++: 7.4.0
лязг: 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";}
}
прочее. cpp:
namespace {
struct A {};
}
void g() { throw A(); }