1// RUN: %clang_cc1 -emit-llvm -o - %s
2
3struct A {
4   virtual ~A();
5};
6
7template <typename Ty>
8struct B : public A {
9   ~B () { delete [] val; }
10private:
11     Ty* val;
12};
13
14template <typename Ty>
15struct C : public A {
16   C ();
17   ~C ();
18};
19
20template <typename Ty>
21struct D : public A {
22     D () {}
23   private:
24     B<C<Ty> > blocks;
25};
26
27template class D<double>;
28