はこの短いスニペットを考えてみましょ同意:GCCと打ち鳴らすは
struct B {
B() = default;
explicit B(B const&) { }
};
struct D : B { };
int main() {
try {
throw D{};
}
catch(B) {
}
}
gccが、このコードを受け付け、打ち鳴らすは、それがで病気に形成されたとみなし:
そうですmain.cpp:17:13: error: no matching constructor for initialization of 'B'
catch(B) {
^
?
また、両方とも正しいかもしれません。 – xaxxon
@xaxxon私はこれが不特定であると疑う。それが有効であると思われるか無効であると思われるかのいずれかです。いずれにせよ、例外は奇妙です。 – Barry
ええ、GCCは 'B'を投げようとすると正しく拒否しますが、' D'を投げようとすると拒否しません。 –