1 struct X {
2   int v;
3   typedef int t;
4 };
5 
6 struct YA {
7   int value;
8   typedef int type;
9 };
10 
11 template<typename T> struct C : X, T {
12   using T::value;
13   using typename T::type;
14   using X::v;
15   using typename X::t;
16 };
17 
18 template<typename T> struct D : X, T {
19   using T::value;
20   using typename T::type;
21   using X::v;
22   using typename X::t;
23 };
24 
25 template<typename T> struct E : X, T {
26   using T::value;
27   using typename T::type;
28   using X::v;
29   using typename X::t;
30 };
31 
32 template<typename T> struct F : X, T {
33   using T::value;
34   using typename T::type;
35   using X::v;
36   using typename X::t;
37 };
38 
39 // Force instantiation.
40 typedef C<YA>::type I;
41 typedef D<YA>::type I;
42 typedef E<YA>::type I;
43 typedef F<YA>::type I;
44