template<typename T>
inline T const& max(T const& a,T const& b)
max(4, 7);//ok
max(4 , 7.1);//error
解决办法:
1. max(static_cast<double>(4), 7.1);
2.max<double>(4, 7.1);
#include <iostream>
using namespace std;
template<typename T>
inline T const& max(T const& a, T const& b)
{
return a > b ? a : b;
}
int main()
{
cout << ::max(4, 5) << endl;
cout << ::max('a', 'b') << endl;;
cout << ::max(4.1, 5.1) << endl;;
cout << ::max(4, static_cast<int>(5.1)) << endl;;
cout << ::max(static_cast<double>(4), 5.1) << endl;;
cout << ::max<double>(4, 5.1) << endl;;
cout << ::max<int>(4, 5.1) << endl;;
return 0;
}