C++ 错误:无法从';转换函数模板;int';至';双倍';

C++ 错误:无法从';转换函数模板;int';至';双倍';,c++,C++,我正在尝试实现一个函数模板 template <class T> T max(T& t1, T& t2) { return t1 < t2 ? t2 : t1; } 模板 T最大值(T&t1、T&t2) { 返回t1

我正在尝试实现一个函数模板

template <class T>
T max(T& t1, T& t2)
{
    return t1 < t2 ? t2 : t1;
}
模板
T最大值(T&t1、T&t2)
{
返回t1
我称之为
max(33,44.2)
,因此我希望它将int转换为double,并以double形式给出结果,而我得到的是一个错误:


无法从“int”转换为“double”

它在没有引用(或常量引用)的情况下工作:

模板
最大温度(t1,t2)
{
返回t1
然后

max<double>(33, 44.2)
max(33,44.2)

将模板参数更改为
const T&
。非
const
引用不能绑定到临时变量。这不是您得到的错误。你想把一个常数当作左值。使用
T const&tn
。你忍者会告诉我答案:P
max<double>(33, 44.2)