1// { dg-do compile }
2
3// Copyright (C) 2003 Free Software Foundation
4// Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5
6// Member template function of member class template as friend
7
8template <class T> struct A {
9  template <class U> struct B {
10    template <class V> void f(V);
11  };
12};
13
14class X {
15  int i;
16  template <class T> template <class U> template <class V>
17    friend void A<T>::B<U>::f(V);
18};
19
20template <class T> template <class U> template <class V>
21  void A<T>::B<U>::f(V)
22{
23  X x;
24  x.i = 0;
25}
26
27int main()
28{
29  A<char>::B<char> a1;
30  a1.f(0);
31}
32