X<T>
は、クラスをパラメーターとして受け取るテンプレートクラスであり、A
複数または仮想継承を伴わずに派生したB
クラスであるとします(つまり、との間でキャストするときにポインターの調整は必要ありません)。B
A
A
B
X<A*>
からへ、X<B*>
またはその逆のキャストをチェーンソーで再解釈するのは安全ですか?もちろん、aX<A*>
はノーX<B*>
ですが、これらのクラスは常に同じ動作を共有するべきではありませんか?ポインタが使用されるため、メモリレイアウトは同じである必要があります。X<B*>
したがって、実際にはであるインスタンスでメソッドを操作させることは問題ないかもしれませんX<A*>
。
もちろん、これは、たとえばの要素をに挿入できるように、どういうわけか型安全性を台無しにA*
しX<B*>
ますが、これはこの質問の範囲外です。