// { 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" }
}
