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