- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 
template <typename T> T min3 (T v1, T v2, T v3) {
  T min = v1;
  if (min > v2)
    min = v2;
  if (min > v3)
    min = v3;
  return min;
};
template <typename T> T max3 (T v1, T v2, T v3) {
  T max = v1;
  if (max < v2)
    max = v2;
  if (max < v3)
    max = v3;
  return max;
};
                                
 Follow us!
template <class T>
const T& max3 (const T& first, const T& second, const T& third)
{
return std::max (first, std::max (second, second));
}
template <class T>
const T& min3 (const T& first, const T& second, const T& third)
{
return std::min (first, std::min (second, second));
}
std::max (second, second)
std::min (second, second)
а уж часы вообще говно.
можно нюхать, лизать, на хвост нанизать
незаменимый гаджет же!
Покажи рекурсию.
Я про то, что зачем тут стддвоеточиедвоеточиемакс?
И как ни крути, почти каждый проект на с++ полон самописными велосипедами чуть менее чем полностью.
template <typename RetT> RetT MaxTemplate() { return (RetT)0; }
template <typename RetT, typename ArgT, typename ... Args> RetT MaxTemplate(ArgT Arg1, Args ... args)
{ RetT Temp = MaxTemplate<RetT>(args ...); return ((RetT)Arg1 > Temp) ? ((RetT)Arg1) : (Temp); }
стандарт C++0x...
или так понятнее min1, min2 min3 min4 - версионность на уровне функций)))