2 // Ensure that virtual base upcast and downcasting works on this
3 // conversions during virtual function dispatch at ctor/dtor time
4 // when dynamic vtable fixups for deltas are needed.
16 virtual MID *VFN (){ return 0; }
19 class MIBASE : public BASE1, public BASE2 { };
21 class VBB : public MIBASE {
23 virtual long get_STATE () const = 0;
24 void print_STATE() { if (get_STATE () != 87654321) fail = 1; }
27 class VBD : public virtual VBB {
30 long get_STATE() const { return STATE; }
31 VBD() { STATE = 87654321; }
32 ~VBD() { STATE = 87654321; }
35 class MID : public virtual VBD {
37 MID () { print_STATE(); }
38 ~MID () { print_STATE(); }
39 virtual MID *VFN() { return this; }
42 class LAST : public MID {
44 LAST () { print_STATE(); }
45 ~LAST () { print_STATE(); }