Что происходит при перемещении объекта в самого себя?

Допустим, у меня есть вектор, я его использую, а потом случайно перемещаю его не другому вектору, а себе же. Что в таком случае произойдёт? Ошибок не выдаёт. В векторе будет то же самое значение?

#include <vector>
#include <utility>

int main() {
  auto l = std::vector{1, 2, 3};
  auto I = std::vector{3, 2, 1};
  // ... 
  l = std::move(l); // ?
}

Ответы (1 шт):

Автор решения: joker

Вектор будет в валидном состоянии, но какое именно значение неизвестно. Это означает, что можно вызывать empty и clear, но не стоит получать значение какого-то элемента, пока не присвоишь ему новое. Смотрите https://en.cppreference.com/w/cpp/utility/move.

→ Ссылка