// PR c++/16810 struct C { virtual void f() {} }; struct B {virtual ~B() {} }; class D : public B, public C { public: virtual void f() {} }; typedef void ( C::*FP)(); typedef void ( D::*D_f)(); int main() { D *d = new D(); C *c = d; const FP fptr = (FP) &D::f;; (d->* (D_f)fptr)(); }