Por que o operador-> pode ser sobrecarregado manualmente?

Não faria sentido sep->m era apenas açúcar sintático para(*p).m? Essencialmente, cadaoperator-> que eu já escrevi poderia ter sido implementado da seguinte maneira:

Foo::Foo* operator->()
{
    return &**this;
}

Existe algum caso em que eu gostariap->m para significar algo mais do que(*p).m?

questionAnswers(5)

yourAnswerToTheQuestion