1 // { dg-do compile }
2 
3 // Copyright (C) 2002 Free Software Foundation, Inc.
4 // Contributed by Nathan Sidwell 18 Dec 2001 <nathan@codesourcery.com>
5 
6 // PR 109, dependent member friends
7 
8 struct B
9 {
10   static int foo ();
11   struct N
12   {
13     static int bar ();
14   };
15 };
16 
17 
18 template <class T>
19 class A
20 {
21   friend int T::foo ();
22   friend int T::N::bar ();
23 
24   private:
25   static int m;
26 };
27 
28 template <class T>
29 class C
30 {
31   friend struct T::N;
32 
33   private:
34   static int m;
35 };
36 
37 
foo()38 int B::foo ()
39 {
40   return A<B>::m;
41 }
42 
bar()43 int B::N::bar ()
44 {
45   return A<B>::m + C<B>::m;
46 }
47