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()55int main() { 56 C& bb = *new C; 57 R& mv = bb; 58 bb.real(0); 59 mv.real(0); 60 return 0; 61 } 62