【发布时间】:2019-12-03 17:05:26
【问题描述】:
在Template class type-specific functions 之后,如何自定义我的模板代码以不针对某些类型进行编译? 如果问题不清楚,请查看此示例。
///** template class ***/
template<typename T>
class testClass{
testClass();
T parameter;
}
template<typename T>
void testClass<T>::print(){cout<<parameter.value<<endl;}
上面的类应该适用于以下类型:
//** types file **/
class paramtype1{
int value;
}
class paramtype2{
int value;
}
class paramtype3{
}
如您所见,paramtype3 没有value,所以我收到一个编译错误,指出未定义value。我知道如果我想为某种类型专门化一个模板类函数,我需要这样做:
template<>
void testClass<paramtype1>::print(){cout<<parameter.value<<endl;}
但是,有什么办法可以反其道而行之,只排除某些特定类型吗?
【问题讨论】:
-
您应该编辑您的问题以包含具体您想要包含/排除的类型,以及为什么。如果您只想在类型具有特定成员时启用特化,您将使用不同的技术。
-
另外,当您尝试将模板与
paramtype3... 一起使用时遇到编译器错误,这并不意味着它已经没有针对该类型进行编译?