¿Cómo usar c ++ 11 mover la semántica para añadir contenidos vectoriales a otro vector?

Considera este fragmento:

class X;

void MoveAppend(vector<X>& src, vector<X>& dst) {
   dst.reserve(dst.size() + src.size());
   for (const X& x : src) dst.push_back(x);
   src.clear();
}

Si asumimos queclass X&nbsp;Implementa movimientos semánticos, ¿cómo puedo implementar eficientemente?MoveAppend?