以下のコードは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