我知道这是因为模板函数的返回类型与第一个参数(T)的返回类型相同。
如何修改此模板,使其在所有情况下都能正确运行?
#include <iostream>
using namespace std;
template <typename T, typename U>
T max(T x, U y)
{
return x>y ? x : y;
}
int main()
{
cout<<max(17.9,17)<<"\n";
cout<<max(17,17.9)<<"\n";
}
Output:
17.9
17
的行为your实现是正确的,尽管您可能不想要该输出。问题与返回类型在你的代码中。
您可能想使用尾随返回类型如果你可以使用 C++11:
template <typename T, typename U>
auto max(T x, U y) -> decltype(x>y ? x : y) //C++11 only
{
return x>y ? x : y;
}
这将给出以下输出:
17.9
17.9
我希望这是期望的输出。
在线演示:http://ideone.com/2Sh5Y
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)