title: Trigger cast operator on use of the dot operator
body: <p>I have a class something like this:</p>
  
  <pre><code>template&lt;typename T&gt;
  class wrapper
  {
  public:
      operator const T &amp; () const
      {
          return value;
      }
  private:
      T value;
  };
  </code></pre>
  
  <p>I then use it with a struct like this:</p>
  
  <pre><code>struct point { float x; float y; };
  
  //...
  
  wrapper&lt;point&gt; myPoint;
  std::cout &lt;&lt; myPoint.x;// error: no member x or whatever.
  </code></pre>
  
  <p>I'm wondering if there's a way to allow this without having to do ((point)myPoint).x. I know that I can overload the -> operator but I'd prefer not to since its supposed to "pretend" to be a non-pointer.</p>