111
|
1 // { dg-do run }
|
|
2 // GROUPS vtable
|
|
3 extern "C" int printf (const char *, ...);
|
|
4
|
|
5 class A
|
|
6 {
|
|
7 public:
|
|
8 virtual ~A(){}
|
|
9 virtual int type(void)
|
|
10 {
|
|
11 return -1;
|
|
12 }
|
|
13 };
|
|
14
|
|
15 class B
|
|
16 {
|
|
17 public:
|
|
18 virtual ~B(){}
|
|
19 };
|
|
20
|
|
21
|
|
22 class C0 : public B, public A
|
|
23 {
|
|
24 public:
|
|
25 virtual int type(void)
|
|
26 {
|
|
27 return 0;
|
|
28 }
|
|
29 };
|
|
30
|
|
31 class C1 : public C0
|
|
32 {
|
|
33 public:
|
|
34 virtual int type(void)
|
|
35 {
|
|
36 return 1;
|
|
37 }
|
|
38 };
|
|
39
|
|
40 class C2 : public C0
|
|
41 {
|
|
42 public:
|
|
43 virtual int type(void)
|
|
44 {
|
|
45 return 2;
|
|
46 }
|
|
47 };
|
|
48
|
|
49 int main()
|
|
50 {
|
|
51 C1 *one = new C1;
|
|
52
|
|
53 if (one->type() == 1)
|
|
54 {
|
|
55 printf ("PASS\n");
|
|
56 return 0;
|
|
57 }
|
|
58 else
|
|
59 {
|
|
60 printf ("FAIL\n");
|
|
61 return 1;
|
|
62 }
|
|
63 }
|