2008-01-13

VC9のよく分からない致命的なエラー

 以下のコードをコンパイルしようとすると、コンパイラ自体が例外的な終了をする。
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.