// { dg-do run } struct A { virtual int a () { return 0; } }; struct B { virtual int b () { return 0; } virtual int b2 () { return 0; } }; struct C : public A, public B { virtual int a () { return 1; } virtual int b () { return 2; } virtual int b2 () { return 3; } }; int (C::*vmpb) () = &C::b; int (C::*vmpb2) () = &C::b2; int (C::*vmpa) () = &C::a; int main () { C c; if ((c.*vmpa)() != 1) return 1; if ((c.*vmpb)() != 2) return 1; if ((c.*vmpb2)() != 3) return 1; }