Почему resize () вызывает копию, а не перемещение содержимого вектора при превышении емкости? [Дубликат]

На этот вопрос уже есть ответ здесь:

Как применить семантику перемещения при росте вектора? 4 ответа

Данный классX ниже (специальные функции-члены, отличные от явно определенных, не относятся к этому эксперименту):

struct X
{
    X() { }
    X(int) { }
    X(X const&) { std::cout << "X(X const&)" << std::endl; }
    X(X&&) { std::cout << "X(X&&)" << std::endl; }
};

Следующая программа создает вектор объектов типаX и изменяет его так, чтобы его емкость была превышена, а перераспределение было принудительным:

#include <iostream>
#include <vector>

int main()
{
    std::vector<X> v(5);
    v.resize(v.capacity() + 1);
}

С классомX предоставляет конструктор перемещения, я ожидаю, что предыдущее содержимое вектора будетпереехал в новое хранилище после перераспределения. Удивительно, нопохоже, это не таки вывод, который я получаю:

X(X const&)
X(X const&)
X(X const&)
X(X const&)
X(X const&)

Почему?

Ответы на вопрос(2)

Ваш ответ на вопрос