Dead
[official-gcc.git] / gomp-20050608-branch / gcc / testsuite / g++.old-deja / g++.pt / spec36.C
blobe52323b6bb4f5708923231ed6729f3f1ea872a37
1 // { dg-do run  }
2 // Copyright (C) 2000 Free Software Foundation, Inc.
3 // Contributed by Nathan Sidwell 18 Jan 2001 <nathan@codesourcery.com>
5 // Bug 1617. We didn't resolve partial ordering properly. The std is rather
6 // vague about it anyway, DR 214 talks about this.
8 extern "C" int puts (char const *);
10 template <typename T> int Foo (T *) {puts (__PRETTY_FUNCTION__); return 1;}
11 template <typename T> int Foo (T &) {puts (__PRETTY_FUNCTION__); return 2;}
12 template <typename T> int Foo (T const &) {puts (__PRETTY_FUNCTION__); return 3;}
14 template <typename T> int Bar (T const *const &) {puts (__PRETTY_FUNCTION__); return 4;}
15 template <typename T> int Bar (T *const &) {puts (__PRETTY_FUNCTION__); return 5;}
16 template <typename T> int Bar (T *) {puts (__PRETTY_FUNCTION__); return 6;}
18 template <typename T> int Quux (T *const &) {puts (__PRETTY_FUNCTION__); return 7;}
19 template <typename T> int Quux (T const &) {puts (__PRETTY_FUNCTION__); return 8;}
22 int Baz (int const *ptr, int *ptr2)
24   if (Foo (ptr) != 1)
25     return 1;
26   if (Foo (ptr2) != 1)
27     return 2;
28   if (Foo (*ptr) != 3)
29     return 3;
30   if (Foo (*ptr2) != 2)
31     return 4;
32   
33   if (Bar (ptr) != 4)
34     return 5;
35   
36   if (Quux (ptr) != 7)
37     return 5;
38   if (Quux (ptr2) != 7)
39     return 6;
40   
41   return 0;
44 int main ()
46   return Baz (0, 0);