1 // PR c++/52126
2 // { dg-do compile }
3 
4 template <class T> struct Z {};
5 
6 template<typename T>
7 struct A
8 {
9   struct B;
10   struct C;
11   struct D;
12   struct E;
13   struct F;
14 };
15 
16 template <class T>
17 struct A<T>::B : A<T>
18 {
19   using A::nonexist; // { dg-error "has not been declared" }
20 };
21 
22 template <class T>
23 struct A<T>::C : A
24 {
25   using A::nonexist; // { dg-error "has not been declared" }
26 };
27 
28 template <class T>
29 struct A<T>::D : A<T>
30 {
31   using A<T>::nonexist; // { dg-error "has not been declared" }
32 };
33 
34 template <class T>
35 struct A<T>::E : A
36 {
37   using A<T>::nonexist; // { dg-error "has not been declared" }
38 };
39 
40 template <class T>
41 struct A<T>::F : Z<T>
42 {
43   using Z<T>::nonexist;
44 };
45