// { dg-do compile } // Origin: Giovanni Bajo // DR161: Access to protected nested type namespace N1 { struct A { protected: typedef int type; }; struct B : public A { void test(void) { A::type t; } friend void ftest(void) { A::type t; } }; } namespace N2 { template struct A { protected: typedef int type; }; template struct B : public A { void test(B b) { typename A::type t; } friend void ftest(B b) { typename A::type t; } }; template struct B; }