在阅读到fastdelegate.h中,看到这么一段代码
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_uion<OutputClass, InputClass> u;
typedef int ERROR_CantUserHorrible_cast[sizeof(InputClass) == zizeof(u) && sizeof(InputClass) == sizeof(OutputClass) ? 1 : -1];
u.in = input;
return u.out;
};
这里(强制把input转换成output类型),在函数中使用了一个union来避免C++的类型检查