1 // Origin PR c++/47957
2 // { dg-do compile }
3 
4 struct S
5 {
6   int m;
7 
SS8   S()
9     : m(0)
10   {
11   }
12 };
13 
14 struct Base
15 {
16   typedef S T;
17 };
18 
19 template<class T>
20 struct Derived : public Base
21 {
22   int
fooDerived23   foo()
24   {
25     T a; // This is Base::T, not the template parameter.
26     return a.m;
27   }
28 };
29 
30 int
main()31 main()
32 {
33   Derived<char> d;
34   return d.foo();
35 }
36