2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / g++.dg / template / conv3.C
bloba6b0f639bccb64333d4ab6dcbe2b8299e8711dad
1 // { dg-do run }
3 // Copyright (C) 2001 Free Software Foundation, Inc.
4 // Contributed by Nathan Sidwell 29 Dec 2001 <nathan@codesourcery.com>
6 // PR 4361. Template conversion operators were not overloaded.
8 template <typename T> struct C
10   operator T () 
11   {
12     return 0;
13   }
14   template <typename T2> operator T2 ()
15   {
16     return 1;
17   }
18   int Foo ()
19   {
20     return operator T ();
21   }
22   template <typename T2> int Baz ()
23   {
24     return static_cast <int> (operator T2 ());
25   }
28 int main ()
30   int r;
31   C<int> c;
33   r = c.Foo ();
34   if (r)
35     return 1;
36   r = c.Baz<int> ();
37   if (r)
38     return 2;
39   r = c.Baz<float> ();
40   if (!r)
41     return 3;
42   return 0;