Under the Itanium C++ ABI, how is the address of a non-virtual member function captured by a pointer-to-member, and how does this differ for a virtual member function?
struct B { void f(); virtual void g(); };
void (B::*pf)() = &B::f;
void (B::*pg)() = &B::g;