Implicit conversion for pointer to data member vs. non-member
<p>Most discussion I've seen about member pointers focus on conversions permitted on the type to which the member belongs.  My question is about conversions on the type of the member.</p>

<pre><code>struct Base{};
struct Derived : public Base{};
struct Foo{ Derived m_Derived; };
</code></pre>

<p>Given these declarations, the following code produces an error (MSVC 2008):</p>

<pre><code>// error C2440: 'initializing' : cannot convert from 'Derived Foo::* ' to 'Base Foo::* '
Base Foo::*p = &amp;Foo::m_Derived;
</code></pre>

<p>Conversion from Derived* to Base* is normally allowed - why the difference here?</p>
