这两天在饮水思源的C板,关于C++模板的类型转换的一个讨论,后面是我的解答。

原问题

今天在书上看到模板演绎的时候可以允许cast-down,于是我写了个东西:

template <bool _Test, class _Type = void>
struct enable_if { };

template<class _Type>
struct enable_if<true, _Type> {
    typedef _Type type;
};

class A { };
class B : A { };

template <typename T>
struct …