// { dg-do compile } | |
// Copyright (C) 2002 Free Software Foundation, Inc. | |
// Contributed by Nathan Sidwell 18 Dec 2001 <nathan@codesourcery.com> | |
// PR 109, dependent member friends | |
struct B | |
{ | |
static int foo (); | |
struct N | |
{ | |
static int bar (); | |
}; | |
}; | |
template <class T> | |
class A | |
{ | |
friend int T::foo (); | |
friend int T::N::bar (); | |
private: | |
static int m; | |
}; | |
template <class T> | |
class C | |
{ | |
friend struct T::N; | |
private: | |
static int m; | |
}; | |
int B::foo () | |
{ | |
return A<B>::m; | |
} | |
int B::N::bar () | |
{ | |
return A<B>::m + C<B>::m; | |
} |