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 {
~BB10    ~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 {
DD23      D () {}
24    private:
25      B<C<Ty> > blocks;
26 };
27 
28 template class D<double>;
29