以下函数模板尝试从输入的值中计算最大值。当我将 FT 与单一数据类型一起使用时,它工作得很好,但在与两种不同的数据类型一起使用时会显示警告。
功能如下:
template<typename T,typename U>
const T& maxVal(const T& var1,const U& var2)
{
if(var1<var2)
return var1;
else
return var2;
}
用户功能( main )如下:-
int main(void)
{
int var1 = 10;
double var2 = 20.10;
cout<<maxVal(10,20.10)<<endl; // warning displayed " returning reference to temporary"
cout<<maxVal(var1,var2)<<endl; // warning still persists in this case
return 0;
}
当我删除U
数据类型并将其替换为 时T
,程序运行顺利。为什么会这样?