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