Why doesn't auto_ptr support op->*()
<p>auto_ptr (shared_ptr as well) try to make their use as transparent as possible; that is, ideally, you should not be able to tell a difference whether you're using an auto_ptr or a real pointer to an object. Consider:</p>

<pre><code>class MyClass
{
public:
    void foo() {  }
};

MyClass* p = new MyClass;
auto_ptr&lt;MyClass&gt; ap(new MyClassp);

p-&gt;foo();       // No notational difference in using real
ap-&gt;foo();      // pointers and auto_ptrs
</code></pre>

<p>When you try to invoke a member function through a pointer-to-member, there is a difference, as auto_ptr obviously doesn't implement op->*():</p>

<pre><code>void (MyClass::*memfun)() = &amp;MyClass::foo;

(p-&gt;*memfun)();         // OK
(ap-&gt;*memfun)();        // Error op-&gt;*() missing
(ap.get()-&gt;*memfun)();  // OK
</code></pre>

<p>Why is there no support for op->*() in auto_ptr and how would one implement it (I've experimented for some time, but ultimately gave up).</p>
