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