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
You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.