title: Efficiency of C++11 push_back() with std::move versus emplace_back() for already constructed objects
body: <p>In C++11 <code>emplace_back()</code> is generally preferred (in terms of efficiency) to <code>push_back()</code> as it allows in-place construction, <strong>but is this still the case when using <code>push_back(std::move())</code> with an already-constructed object?</strong></p>
  
  <p>For instance, is <code>emplace_back()</code> still preferred in cases like the following?</p>
  
  
  
  <pre class="lang-c++11 prettyprint-override"><code>std::string mystring("hello world");
  std::vector&lt;std::string&gt; myvector;
  
  myvector.emplace_back(mystring);
  myvector.push_back(std::move(mystring));
  // (of course assuming we don't care about using the value of mystring after)
  </code></pre>
  
  <p>Additionally, is there any benefit in the above example to instead doing:</p>
  
  <pre class="lang-c++11 prettyprint-override"><code>myvector.emplace_back(std::move(mystring));
  </code></pre>
  
  <p>or is the move here entirely redundant, or has no effect?</p>