函数重载中的模板参数推导问题
您遇到了编译器在调用重载函数时无法推导模板参数的问题。让我们深入研究此行为背后的原因。
您的代码定义了两个模板函数,每个函数都有特定的参数和返回类型。然而,类型名 S::type 的显式使用为模板参数 A 和 B 创建了非推导上下文。根据 C 标准 (2003) 第 14.8.2.4 节,仅出现在非推导上下文中的模板参数不被考虑参数推导。
在主函数中,您尝试使用整数值调用这些重载函数,例如 temp(c) 和温度2(d,7)。编译器无法推导模板参数,因为 c 是 char 类型,d 是 int 类型,但这些参数仅在非推导上下文中使用。
要解决此问题,您必须在来电。例如,要使用 char 参数调用 temp,您可以编写 temp
通过理解非推导上下文的概念以及模板参数推导的要求,您可以避免这些陷阱并确保您的代码可以编译成功了。
以上是为什么我的编译器无法推导重载函数中的模板参数?的详细内容。更多信息请关注PHP中文网其他相关文章!