title: Overloading member access operators ->, .*
body: <p>I understand most operator overloading, with the exception of the member access operators <code>-&gt;</code>, <code>.*</code>, <code>-&gt;*</code> etc.</p>
  
  <p>In particular, what is passed to these operator functions, and what should be returned?</p>
  
  <p>How does the operator function (e.g. <code>operator-&gt;(...)</code> ) know what member is being refered to? Can it know? Does it even need to know?</p>
  
  <p>Finally, are there any const considerations that need to be taken into account? For example, when overloading something like <code>operator[]</code>, generally you will need both a const and non-const version. Do member access operators require const and non-const versions?</p>