#include <iostream.h>
#include <conio.h>
#pragma hdrstop
template <class T> T max(T &x, T &y)
{
  return (x > y) ? x : y;
};
//----przeładowana wersja funkcji ogólnej max()------------
max(int &x, int &y)
{
  return (x < y) ? x : y;
}

//---------------------------------------------------------
int main()
{
  double x=12222.333365, y=14444.4467677;
  int i=-102, j=105;
  char a='a', z='z';
  cout.setf(ios::fixed);
  // Wywołanie funkcji ogólnej max() z parametrami typu double
  cout << max(x, y) << endl;
  // Jawne wywołanie przeładowanej funkcji max() z parametrami
  // typu int. Mimo, iż funkcja posiada taką samą nazwę, to jednak 
  // zwraca mniejszy liczbowo parametr aktualny
  cout << max(i, j) << endl;
  // Wywołanie funkcji ogólnej max() z parametrami typu char
  cout << max(a, z) << endl;
  getch();
  return 0;
}

