aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.pt/tiemann2.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.pt/tiemann2.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/tiemann2.C34
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/tiemann2.C b/gcc/testsuite/g++.old-deja/g++.pt/tiemann2.C
new file mode 100644
index 00000000000..31465d86025
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/tiemann2.C
@@ -0,0 +1,34 @@
+extern "C" void printf (char *, ...);
+template <class T> T max (const T&x, const T&y)
+{
+ return (x>y)?x:y;
+}
+
+class complex
+{
+ double re, im;
+ public:
+ complex (double r, double i=0) { re = r; im = i; }
+ friend int operator > (const complex& x, const complex &y);
+ void print () { printf ("re = %g; im = %g;\n", re, im); }
+};
+int operator >(const complex& x, const complex &y)
+{
+ double c1 = x.re * x.re + x.im * x.im;
+ double c2 = y.re * y.re + y.im * y.im;
+ return c1 > c2;
+}
+
+main ()
+{
+ complex c1 (1, 0);
+ complex c2 (2, 0);
+ complex c3 (2, 3);
+ complex c4 (2, 1);
+
+ complex m1 = max (c1, c2);
+ complex m2 = max (c3, c4);
+ m1.print ();
+ m2.print ();
+ return 0;
+}