1 // PR c++/59930
2 
3 namespace N {
4   template<typename T> class A {
5     // The injected name is N::B, because we don;t look outside of N
6     template<typename U> friend struct B;
7   private:
8     int n; // { dg-message "declared private here" }
9   public:
10     A (int);
11   };
12 }
13 
14 template<typename T> struct B {
fB15   int f(N::A<int> ai) { return ai.n; } // { dg-error "is private" }
16 };
17 
18 int k = B<int>().f(0);
19