// { dg-do assemble  }

typedef int I;
int i;

template <class A> class B {
  A a;
 public:
  B(A&aa);
  B();
  ~B();
};

template <class B> class C { public: B b; };

template <class I, class i> class D : I { public: i ii; };

typedef B<int> b_int;
typedef C<int> c_int;      
typedef C<b_int> c_b_int2; 

c_b_int2 x2;
int z;
D<c_b_int2,b_int> d;
int q;
