Move constructor, non-const copy constructor, list's emplace in VS2010
<p>I'm new to move constructor and quite confused with VS2010 behavior.
I design a move constructor (of class A) which in my knowledge is like this:</p>

<pre><code>A(A&amp;&amp; input) {some code}
</code></pre>

<p>When I use list's emplace and put an instance of class A:</p>

<pre><code>mylist.emplace(a);
</code></pre>

<p>My move constructor is not called, and a non-const copy constructor is called instead:</p>

<pre><code>A(A&amp; input) {the same code as move constructor}
</code></pre>

<p>On the other hand when I do this:</p>

<pre><code>mylist.emplace(A(2));
</code></pre>

<p>My move constructor is called like it supposed to. So, my question is:</p>

<ol>
<li>Why is list's emplace call my non-const copy constructor instead of my move constructor?</li>
<li>Is the non-const copy constructor is actually an alternative way to define a move constructor?</li>
<li>Is this behavior is correct (for a c++0x compiler) or it just VS2010's behavior?</li>
</ol>

<p>Thanks a bunch in advance.</p>
