1 // { dg-do compile } 2 3 // Copyright (C) 2004 Free Software Foundation 4 // Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 5 6 // Nested class of class template as friend 7 8 template<class T> struct A 9 { 10 template <class U> struct B1 11 { 12 }; 13 template <class U> struct B2 14 { 15 void f(); 16 }; 17 }; 18 19 class C { 20 int i; // { dg-message "private" } 21 template<class T> template <class U> friend struct A<T>::B1; 22 }; 23 24 template<class T> template <class U> void A<T>::B2<U>::f() 25 { 26 C c; 27 c.i = 0; // { dg-error "context" } 28 } 29 30 int main() 31 { 32 A<int>::B2<int> b1; 33 b1.f(); // { dg-message "required" } 34 } 35