Do I always get move semantics every time I copy a non const object that implements a move assignment?
<p>For example:</p>

<pre><code>std::vector&lt;std::pair&lt;std::string, bool &gt; &gt; v;
std::pair&lt;std::string, bool&gt; pr;
v.push_back( pr );
</code></pre>

<p>Assuming <code>std::pair</code> has defined a move assignment operator. Will the call to v.push_back automatically use the 
move assignment or I need to specifically ask for it like so?</p>

<pre><code>v.push_back( std::move(pr) );
</code></pre>
