111
|
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:
|
|
10 A() { }
|
|
11 virtual ~A() { }
|
|
12 virtual void id() { }
|
|
13 };
|
|
14
|
|
15 class B
|
|
16 {
|
|
17 public:
|
|
18 B() { }
|
|
19 virtual ~B() { }
|
|
20 virtual void id() { }
|
|
21 };
|
|
22
|
|
23 class C : public A, public B
|
|
24 {
|
|
25 public:
|
|
26 C() { }
|
|
27 virtual ~C() { }
|
|
28 void id() { abort(); }
|
|
29 };
|
|
30
|
|
31 class D : public C
|
|
32 {
|
|
33 public:
|
|
34 D() { ++num_d; }
|
|
35 virtual ~D() { -- num_d; }
|
|
36 void id() { }
|
|
37 };
|
|
38
|
|
39 int 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 }
|