std::vector
. std::vector
требует, чтобы элементы были, по крайней мере, MoveContstructible
и MoveAssignable
. То есть, например, можно запросто хранить элементы вроде std::unique_ptr
и std::vector
, у которых нежелательно или невозможно пользоваться обычным конструктором копирования, но корректно реализована move-семантика. Ссылки, структуры с ними и прочие константы не удовлетворяют MoveAssignable
, поэтому их и нельзя хранить в std::vector
.