// { dg-do compile } // Copyright (C) 2004 Free Software Foundation // Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> // Nested class of class template as friend template<class T> struct A { template <class U> struct B1 { }; template <class U> struct B2 { void f(); }; }; class C { int i; // { dg-error "private" } template<class T> template <class U> friend struct A<T>::B1; }; template<class T> template <class U> void A<T>::B2<U>::f() { C c; c.i = 0; // { dg-error "context" } } int main() { A<int>::B2<int> b1; b1.f(); // { dg-error "instantiated" } }