1// { dg-do compile } 2 3template <class T> 4struct A 5{ 6 typedef T type; 7}; 8 9template <class T> 10struct B 11{ 12 class type 13 { 14 type(); // { dg-error "private" } 15 }; 16}; 17 18template <class T> 19struct C : A<T>, B<T> 20{ 21 using typename B<T>::type; 22 23 void f() 24 { 25 type j; // { dg-error "context" } 26 } 27}; 28 29template class C<int>; // { dg-message "required" } 30 31template <class T> 32struct D 33{ 34 typedef T type; 35}; 36 37template <class T> 38class E : D<T> 39{ 40 using typename D<T>::type; // { dg-message "previous" } 41 using typename D<T>::type; // { dg-error "redeclaration" } 42}; 43