title: Why can operator-> be overloaded manually?
body: <p>Wouldn't it make sense if <code>p-&gt;m</code> was just syntactic sugar for <code>(*p).m</code>? Essentially, every <code>operator-&gt;</code> that I have ever written could have been implemented as follows:</p>
  
  <pre><code>Foo::Foo* operator-&gt;()
  {
      return &amp;**this;
  }
  </code></pre>
  
  <p>Is there any case where I would want <code>p-&gt;m</code> to mean something else than <code>(*p).m</code>?</p>