title: How to use c++11 move semantics to append vector contents to another vector?
body: <p>Consider this snippet:</p>
  
  <pre><code>class X;
  
  void MoveAppend(vector&lt;X&gt;&amp; src, vector&lt;X&gt;&amp; dst) {
     dst.reserve(dst.size() + src.size());
     for (const X&amp; x : src) dst.push_back(x);
     src.clear();
  }
  </code></pre>
  
  <p>If we assume that <code>class X</code> implements move semantics, how can I efficiently implement <code>MoveAppend</code>?</p>