私はCodeProjectでいくつかのコードを使い、C++のキャストのために次のコードを見つけました。C++キャストの実装
template <class OutputClass, class InputClass>
union horrible_union{
OutputClass out;
InputClass in;
};
template <class OutputClass, class InputClass>
inline OutputClass horrible_cast(const InputClass input){
horrible_union<OutputClass, InputClass> u;
u.in = input;
return u.out;
}
キャストが上記の方法で実装されているのはなぜですか。なぜ手動でキャストすることができないのですか?誰かが普通のキャストがうまくいかないときの例を挙げることはできますか?
異なるメンバを設定した後にユニオンのメンバにアクセスすることは、未定義の動作であるため、この「horrible_union」アプローチより優れています。 –
おそらくそれは恐ろしいキャストという名前です。基本的には、コンパイラ固有の動作を実装することです。 – KodeWarrior