C++ template 限制 T 的基类
class Base{};
template<typename T, typename B>
using IsCompatible = typename std::enable_if<std::is_convertible<T*, B*>::value, bool>::type;
template<class T, IsCompatible<T,Base> = true>
void doSomething();
C++ template 限制 T 的基类
class Base{};
template<typename T, typename B>
using IsCompatible = typename std::enable_if<std::is_convertible<T*, B*>::value, bool>::type;
template<class T, IsCompatible<T,Base> = true>
void doSomething();