这个
template <> bool validate<const char&>
当类型模板参数时,编译器选择专用化
T
从主模板推导或明确指定为
const char&
。打电话
validate('a', 'b', 'c')
,
T
推断为
char
,这与专业化所期望的不匹配。
要么为
烧焦
(也就是说,不是
常量字符&
):
template <>
bool validate<char>(const char& minimum, const char& maximum, const char& testValue)
{
return validate(toupper(minimum), toupper(maximum), toupper(testValue));
}
或将重载定义为非模板:
bool validate(char minimum, char maximum, char testValue)
{
return validate(toupper(minimum), toupper(maximum), toupper(testValue));
}