std::move
- это не то, что вы делаете, просто чтобы ваш код компилировался. На самом деле у него есть функция, цель, результат. *
В результате ваши данные были удалены. Это прошло. Сейчас в контейнере; pointer1
et c остаются не связанными с указателями в векторе и (что более важно) больше не указывают ни на что.
Таким образом, это не имеет смысла:
vectorOfAnimals[0] = std::move(pointer1);
Подумайте о слове «уникальный» в названии unique_ptr
.
* std::move
само по себе ничего не двигает. Но для наших сегодняшних целей достаточно близко.