【发布时间】:2020-09-07 01:50:09
【问题描述】:
为什么只有最后一次调用 max 引发错误?
错误 C2668: 'max': 对重载函数的模糊调用
#include <iostream>
#include <type_traits>
template<typename T1, typename T2>
auto max(T1 t1, T2 t2)
{
return t1 < t2 ? t2 : t1;
}
template<typename RT, typename T1, typename T2>
RT max (T1 a, T2 b)
{
return b < a ? a : b;
}
int main()
max<long double>(4.5, 4);
max<double>(4.5, 4);
return 0;
}
【问题讨论】:
-
做了一些研究。对于 max
(4.5, 4);实例化结果是 max 和 并且对于 max (4.5, 4),实例化结果都是 。跨度>
标签: c++ templates overloading