我有一个班级模板
template<class T>
class A
{
};
及其专长之一
template<>
class A<B>
{
};
如果 C 是 B 的子类
class C : public B
{
};
哪个实例化用于A<C>
?如果它使用第一个A<T>
,如何让它使用第二个A<B>
?
将使用主模板,因为A<B>
它不匹配A<C>
. 查看此问题以获取有关如何使其工作的建议:基于继承类的模板专业化
这些方面的东西:
template <typename T, bool isB>
class AHelper {
// generic implementation
};
template <typename T>
class AHelper<T, true> {
// specialization for B
};
template <typename T>
class A : public AHelper<T, std::is_base_of<B, T>::value>
{};