Cスタイルキャストが有用な場面

mozilla/xpcom/reflect/xptinfo/public/xptinfo.h:215-218
Bugzilla@Mozilla – Bug 49641 を見ていてなるほどと思ったのでメモ。

このあたり仕様に詳しくはないけど、かつては incomplete タイプへの reinterpret_cast を許さないコンパイラというのがあったものと伺える。とりあえず手元の g++ (3.4) でも Visual C++ Compiler (13.00.9466) でも次のコードは通ったので、つまり、それはバグだったのではないかと。

class foo;

main()
{
        void* a = 0;
        reinterpret_cast<foo*>(a);
}

それにしてもこんなことであれこれ報告者に言われて Mozilla の中の人がちょっとかわいそう。人のことはあまり言えないけど。