2010-06-19

VCのキャスト周りの実装は腐っているとしか言いようがない

以下のコードはill-formedである。

struct C { } ;

int main( )
{
    struct C() ; // ill-formed.
    C() ; // OK
}

なぜならば、Explicit type conversion (functional notation)には、simple-type-specifierかtypename-specifierしか許可されていないからだ。普通のキャストのように、type-idを使うことは出来ない。

しかるに、VC10では、このコードをコンパイルできる。こういう些細なバグのひとつひとつが、移植できないコードを増やすというのに。

とはいえ、このコードは、コンパイルできてもいいのではないかとも思う。まあ、typedefするとか、static_castした方が、分かりやすいのだが。

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.