union可以避免c++的类型检查

来源:互联网 发布:被墙域名301怎么做 编辑:程序博客网 时间:2024/04/29 01:02

在阅读到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++的类型检查