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 8template <typename T> struct C 9{ 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 } 26}; 27 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