考虑到类模板,可以使用类型特征和虚拟启用器模板参数为某些类型组提供模板特化。我之前已经问过了。
现在,我需要同样的内容应用于函数模板:也就是说,我有一个模板函数,并且想要针对一组类型进行特化,例如所有子类型为类
然而,这并不起作用,因为函数模板不允许部分特化。那么该怎么做呢?也许可以使用带有类型特征的默认参数作为类型?但是代码看起来会是什么样子呢?
现在,我需要同样的内容应用于函数模板:也就是说,我有一个模板函数,并且想要针对一组类型进行特化,例如所有子类型为类
X
的类型。我可以使用类型特征来表达这个意思。std::enable_if<std::is_base_of<X, T>::value>::type
我考虑用这种方式来做:
template <typename T, typename ENABLE = void>
void foo(){
//Do something
}
template <typename T>
void foo<T,std::enable_if<std::is_base_of<A, T>::value>::type>(){
//Do something different
}
然而,这并不起作用,因为函数模板不允许部分特化。那么该怎么做呢?也许可以使用带有类型特征的默认参数作为类型?但是代码看起来会是什么样子呢?