Что происходит при перемещении объекта в самого себя?
Допустим, у меня есть вектор, я его использую, а потом случайно перемещаю его не другому вектору, а себе же. Что в таком случае произойдёт? Ошибок не выдаёт. В векторе будет то же самое значение?
#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.