Mova-se com vetor :: push_back

Suponha que eu tenha o seguinte código:

#include <vector>
struct A {
    int a;
    int x;
};
int main() {
    using namespace std;
    A a1;
    A a2;
    vector<A> va;
    va.push_back(a1);
    va.push_back(move(a2));
}

Estou ciente de que os elementos de std :: vector são armazenados contiguamente, ao contrário de um std :: list. No código acimaa2 é movido, mas não há realmente nenhuma cópia dea2 para o vetorva? Qual é a diferença entreva.push_back(a2); eva.push_back(move(a2));?

questionAnswers(3)

yourAnswerToTheQuestion