gpt4 book ai didi

c++ - 函数模板 c++ 的显式特化

转载 作者:太空狗 更新时间:2023-10-29 20:22:17 24 4
gpt4 key购买 nike

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;
}

这是函数模板,不知何故在 main 中调用 validate 函数时,它从不使用第二个函数(const char&) 即使参数是 char。谁能看出我的问题出在哪里?

最佳答案

您特化的类型 - const char&T 推导的内容不匹配,因为当您传递 char 时 - 它推导为 字符!

(模板类型参数只能在存在通用引用的情况下推导出引用)

所以,

template <> 
bool validate<char> ...

无论如何,你为什么不重载呢?

关于c++ - 函数模板 c++ 的显式特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38643260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com