Is there a way to make a pointer on member function in base class if it is a virtual function and it is overridden in derived class?
Consider the code as follows
#include <iostream>
#include <functional>
struct Base
{
    virtual void g() const
    {
        std::cout << "Base" << std::endl;
    }
};
struct Derived : Base
{
    virtual void g() const override
    {
        std::cout << "Derived" << std::endl;
    }
};
int main()
{
    Derived d;
    (d.*(&Base::g))();
    std::mem_fn(&Base::g)(d);
    return 0;
}
It prints ‘Derived’ twice despite I make a pointer on Base::g. Is there a way to keep function g virtual and overridden and get member function pointer that will print ‘Base’ for d?
 
     
    