class Foo
{
public :
virtual ~Foo() {} ;
} ;
int main()
{
Foo * ptr ;
ptr->~Foo ;//()が抜けている。
}
念のために行っておくが、コード自体の実行ではない。コンパイルしようとするだけで、VC9のコンパイラは落ちる。
再現させるための問題は二つあると思われる。
1.クラスFooのデストラクタは、仮想関数でなければならない。
2.クラスFooのデストラクタを、ポインタ経由で明示的に呼ぶ。
そもそもコンパイルエラーになるコードなのだが、期待される動作は、以下のコンパイルエラーを出すことだ。
error C3866: destructor call missing argument list
それなのに、実際のエラーは、
fatal error C1001: An internal error has occurred in the compiler.
である。
No comments:
Post a Comment