// { dg-do run } // Copyright (C) 2001 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 29 Dec 2001 <nathan@codesourcery.com> // PR 4361. Template conversion operators were not overloaded. template <typename T> struct C { operator T () { return 0; } template <typename T2> operator T2 () { return 1; } int Foo () { return operator T (); } template <typename T2> int Baz () { return static_cast <int> (operator T2 ()); } }; int main () { int r; C<int> c; r = c.Foo (); if (r) return 1; r = c.Baz<int> (); if (r) return 2; r = c.Baz<float> (); if (!r) return 3; return 0; }