1 // { dg-do run } 2 // prms-id: 4246 3 4 extern "C" void abort (); 5 int num_d; 6 7 class A 8 { 9 public: A()10 A() { } ~A()11 virtual ~A() { } id()12 virtual void id() { } 13 }; 14 15 class B 16 { 17 public: B()18 B() { } ~B()19 virtual ~B() { } id()20 virtual void id() { } 21 }; 22 23 class C : public A, public B 24 { 25 public: C()26 C() { } ~C()27 virtual ~C() { } id()28 void id() { abort(); } 29 }; 30 31 class D : public C 32 { 33 public: D()34 D() { ++num_d; } ~D()35 virtual ~D() { -- num_d; } id()36 void id() { } 37 }; 38 main()39int main() 40 { 41 D* dp2 = new D; 42 ((B*)dp2)->id(); 43 delete (B*) dp2; 44 45 B* bp1 = new D; 46 bp1->id(); 47 delete bp1; 48 return num_d != 0; 49 } 50