1 // { dg-do run  }
2 // prms-id: 3068
3 
4 extern "C" int printf(const char *, ...);
5 extern "C" void exit(int);
6 
7 class LB {
8 public:
test()9   virtual int test() { return 0; }
~LB()10   virtual ~LB() { }
11 protected:
LB()12   LB() { }
13 };
14 
15 class RRB {
16 public:
~RRB()17   virtual ~RRB() { }
test2(int a)18   virtual void test2(int a) { }
19 };
20 
21 class RR : public RRB {
22 public:
~RR()23     virtual ~RR() { }
24 };
25 
26 class RL {
27 public:
real(int a)28   virtual void real(int a) {
29     printf("RL::real\n");
30   }
31 };
32 
33 
34 class R : public RL, public RR {
35 public:
test3(int a)36   virtual void test3(int a) { }
test2(int a)37   virtual void test2(int a) { }
38 };
39 
40 class L : public LB {
41 };
42 
43 class C : public L, public R {
44 public:
C()45   C() { }
~C()46   virtual ~C() {
47     printf("C::~C\n");
48     exit(1);
49   }
real(int a)50   virtual void real(int a) {
51     printf("RL::real\n");
52   }
53 };
54 
main()55 int main() {
56     C& bb = *new C;
57     R& mv = bb;
58     bb.real(0);
59     mv.real(0);
60     return 0;
61 }
62