1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// PR c++/41305 // We got into infinite recursion instantiating the B<U> series. template <class T> struct A { }; template <class T, class U = A<T> > struct B; template <class T> struct C { }; template <class T, class U> struct B: C<B<U> > { friend void f(B) { } }; B<int> b; int main() { f(b); }