1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
// { dg-do run } template <class T> struct A { template <class T2> operator A<T2>() const { return A<T2>(); } }; int main() { A<int> a1; A<long> a2; A<double> a3; A<char> a4; a2 = a1.operator A<long>(); a3 = (A<double>) a1; a4 = a1; }