всмысле мне его дают? аргументом функции? так я могу к нему обращаться и если мне его передали ссылкой, ничего не аллокая
можешь, но если речь идёт о конструкторе, то std::vector(std::vector<int> &) должен будет аллокать новый буфер (поэтому копирование с const&, все равно менять плохо), а std::vector(std::vector<int>&&) - нет, он просто возьмет буфер из аргумента