1// { dg-do run  }
2extern "C" int printf (const char *, ...);
3template <class T> T max (const T&x, const T&y)
4{
5  return (x>y)?x:y;
6}
7int min (const float&, const float&);
8int min (const int& i1, const int& i2) {
9  return (i1 < i2) ? i1 : i2;
10}
11
12class complex
13{
14  double re, im;
15 public:
16  complex (double r, double i=0) { re = r; im = i; }
17  friend int operator > (const complex& x, const complex &y) { return 0; }
18  void print () { }
19};
20
21int main ()
22{
23  complex c1 (1, 0);
24  complex c2 (2, 0);
25
26  int j = max (1, 37);
27  complex m1 = max (c1, c2);
28  m1.print ();
29  printf ("j=%d\n", j);
30  return 0;
31}
32