O que é -> * operador em C ++?

C ++ continua a me surpreender. Hoje eu descobri sobre o operador -> *. É sobrecarregável, mas não tenho ideia de como invocá-lo. Eu consigo sobrecarregá-lo na minha aula, mas não tenho idéia de como chamá-lo.

struct B { int a; };

struct A
{
    typedef int (A::*a_func)(void);
    B *p;
    int a,b,c;
    A() { a=0; }
    A(int bb) { b=b; c=b; }
    int operator + (int a) { return 2; }
    int operator ->* (a_func a) { return 99; }
    int operator ->* (int a) { return 94; }
    int operator * (int a) { return 2; }
    B* operator -> () { return p; }


    int ff() { return 4; }
};


void main()
{
    A a;
    A*p = &a;
    a + 2;
}

editar:

Graças à resposta. Para chamar a função sobrecarregada que escrevo

void main()
{
    A a;
    A*p = &a;
    a + 2;
    a->a;
    A::a_func f = &A::ff;
    (&a->*f)();
    (a->*f); //this
}

questionAnswers(3)

yourAnswerToTheQuestion