1 // { dg-do run } 2 3 // Copyright (C) 2001 Free Software Foundation, Inc. 4 // Contributed by Nathan Sidwell 29 Dec 2001 <nathan@codesourcery.com> 5 6 // PR 4361. Template conversion operators were not overloaded. 7 8 template <typename T> struct C 9 { TC10 operator T () 11 { 12 return 0; 13 } T2C14 template <typename T2> operator T2 () 15 { 16 return 1; 17 } FooC18 int Foo () 19 { 20 return operator T (); 21 } BazC22 template <typename T2> int Baz () 23 { 24 return static_cast <int> (operator T2 ()); 25 } 26 }; 27 main()28int main () 29 { 30 int r; 31 C<int> c; 32 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; 43 } 44