ちょっと試してみたのですが、メンバ変数が異なるクラスを
func( (D3DXVECTOR3)hoge );
とするとちゃんとエラーが出ますね。ということはコンパイラが
ちゃんとそこまで判断して通してくれているのでやはり合法
なのかな?