diese kurze Schnipsel vor:eine Ausnahme von Wert Catching - gcc und klappern nicht einverstanden
struct B {
B() = default;
explicit B(B const&) { }
};
struct D : B { };
int main() {
try {
throw D{};
}
catch(B) {
}
}
gcc akzeptiert diesen Code, Klirren hält es schlecht gebildet mit:
main.cpp:17:13: error: no matching constructor for initialization of 'B'
catch(B) {
^
Wer hat Recht?
Auch, vielleicht haben beide Recht .. – xaxxon
@xaxxon Ich bezweifle, dass etwas wie das ist nicht näher bezeichnet. Entweder soll es gültig sein oder es sollte ungültig sein. Wie auch immer, Ausnahmen sind seltsam. – Barry
Hmm, GCC lehnt es korrekt ab, wenn Sie versuchen, ein 'B' zu werfen, aber nicht, wenn Sie versuchen, ein' D' zu werfen. –