#include <iostream>
template <typename T>
inline T const& max(T const& a,T const& b)
{
return a > b ? a : b;
}
int main()
{
std::cout<<max(4,7)<<std::endl; //实例化都是int型。
std::cout<<max(4,4.2)<<std::endl; //ERROR ,实例化发生歧义,第一个int,第二个是double型
//上面的错误有三个解决方法:
1,对实参进行强制类型转换:
max(static_cast<double>(4),4.2);
2,显示指定类型:
max<double>(4,4.2);
3,指定两个参数可以具有不同的类型
getchar();
return 0;
}