¿Qué es el operador -> * en C ++?

C ++ sigue sorprendiéndome. Hoy me enteré del operador -> *. Es recargable pero no tengo idea de cómo invocarlo. Me las arreglo para sobrecargarlo en mi clase pero no tengo ni idea de cómo llamarlo.

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:

Gracias a la respuesta. Para llamar a la función sobrecargada escribo

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

Respuestas a la pregunta(3)

Su respuesta a la pregunta