// { dg-do compile } // Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org> // 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 <class T> struct A { protected: typedef int type; }; template <class T> struct B : public A<T> { void test(B b) { typename A<T>::type t; } friend void ftest(B b) { typename A<T>::type t; } }; template struct B<void>; }