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