Дело в том, что уже max
в std
, и вы говорите using namespace std;
:
template <class T> const T& max ( const T& a, const T& b );
Так что ваш max ('c', 'b', 'a')
называется хорошим;проблема в нем.
template <typename T> T max (T a, T b, T c)
{
return max (max(a,b), c); /* Doesn't know which max to pick. */
}
Я не знаю, почему доступен max
, поскольку вы не включили algorithm
, но, очевидно, это так.
РЕДАКТИРОВАТЬ
Если вы хотите оставить это using
наверху:
template <typename T> T max (T a, T b, T c)
{
return ::max(::max(a, b), c);
}