Como usar a semântica de movimento c ++ 11 para anexar conteúdo vetorial a outro vetor?

Considere este trecho:

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();
}

Se assumirmos queclass X implementa semântica de movimento, como posso implementar de forma eficienteMoveAppend?

questionAnswers(3)

yourAnswerToTheQuestion