回答編集履歴
2
内容を訂正
answer
CHANGED
@@ -1,5 +1,1 @@
|
|
1
|
-
|
1
|
+
単にコンパイルのバグかもしれません。
|
2
|
-
|
3
|
-
> 演算対象の静的な型がその動的な型と異なる場合、その静的な型は、演算対象の動的な型の基底クラスでなければならず、仮想デストラクタをもっていなければならない。 そうでない場合の動作は、未定義とする。
|
4
|
-
|
5
|
-
今回の場合、動的な型が `Derived` であるにもかかわらず、静的な型は `Base` であり、仮想デストラクタを持ってもいないので未定義の動作であることになります。 ですので、 gcc の挙動も clang の挙動も言語仕様通りですし、なんならクラッシュしても仕様通りですので、実質的にはやってはいけないことと考えてください。
|
1
間違って型名を逆に書いていたのを訂正
answer
CHANGED
@@ -2,4 +2,4 @@
|
|
2
2
|
|
3
3
|
> 演算対象の静的な型がその動的な型と異なる場合、その静的な型は、演算対象の動的な型の基底クラスでなければならず、仮想デストラクタをもっていなければならない。 そうでない場合の動作は、未定義とする。
|
4
4
|
|
5
|
-
今回の場合、動的な型が
|
5
|
+
今回の場合、動的な型が `Derived` であるにもかかわらず、静的な型は `Base` であり、仮想デストラクタを持ってもいないので未定義の動作であることになります。 ですので、 gcc の挙動も clang の挙動も言語仕様通りですし、なんならクラッシュしても仕様通りですので、実質的にはやってはいけないことと考えてください。
|