bu kısa parçasını inceleyin katılmıyorum:bir değerle istisna yakalamak - gcc ve clang
main.cpp:17:13: error: no matching constructor for initialization of 'B'
catch(B) {
^
Kim haklı: clang onunla kötü şekillendirilmiş dikkate alır
struct B {
B() = default;
explicit B(B const&) { }
};
struct D : B { };
int main() {
try {
throw D{};
}
catch(B) {
}
}
gcc bu kodu kabul?
Ayrıca, belki her ikisi de doğru .. – xaxxon
@ xaxxon Bunun gibi bir şüphe şüphesiz. Ya geçerli olması gerekiyordu ya da geçersiz olması gerekiyordu. Her iki durumda da istisnalar garip. – Barry
Hmm, GCC, bir "B" atmaya çalışırsanız doğru şekilde reddeder, ancak bir "D" atmaya çalışmadığınız takdirde değil. –