功能模板c的显式专业化
作者:互联网
template <typename T>
bool validate(const T& minimum, const T& maximum, const T& testValue) {
return testValue >= minimum && testValue <= maximum;
}
template <>
bool validate<const char&>(
const char& minimum,
const char& maximum,
const char& testValue)
{
char a = toupper(testValue);
char b = toupper(minimum);
char c = toupper(maximum);
return a >= b && a <= c;
}
这是函数模板,在调用validate函数时,它在某种程度上是主要的,即使参数是char,它也从不使用第二个函数(const char&).任何人都可以看到我的问题在哪里?
解决方法:
你专门用的类型 – const char&与你传递一个字符时的T推导不匹配 – 它推断为char!
(模板类型参数只能在存在通用引用的情况下推断为引用)
所以,
template <>
bool validate<char> ...
无论如何,你为什么不超载呢?
标签:function-templates,c,templates,explicit-specialization 来源: https://codeday.me/bug/20190824/1703713.html