CodeProject でいくつかのコードを調べていて、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;
}
キャストが上記の方法で実装されるのはなぜですか。手動キャストを行うことができないのはなぜですか。通常のキャストが機能しない場合の例を誰かが挙げることができますか?