// PR c++/59930 namespace N { template class A { // The injected name is N::B, because we don;t look outside of N template friend struct B; private: int n; // { dg-message "declared private here" } public: A (int); }; } template struct B { int f(N::A ai) { return ai.n; } // { dg-error "is private" } }; int k = B().f(0);