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