| // { 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>; | |
| } |