Чтобы понять наиболее подходящее решение, вам нужно понять срок жизни и владение SomeClass и вектор, который он передал. Например, если SomeClass использует вектор по ссылке, то код, который создает SomeClass, должен убедиться, что время жизни вектора больше, чем у SomeClass, в противном случае SomeClass может в итоге получить ссылку, которая больше не является допустимой. Передавая по ссылке, SomeClass не «берет на себя ответственность» за вектор
В качестве альтернативы, если код, который создает SomeClass, хочет «передать» ответственность вектора (и у вас есть компилятор и реализация STL, которая «знает ссылку на r-значение»), то вы можете передать значение r ссылка на вектор;
class SomeClass {
vector<int> data_;
public:
SomeClass(vector<int>&& data) : data_(data)
}
Тогда код, который создает SomeClass;
vector<int> data;
data.push_back(1);
data.push_back(2);
data.push_back(3);
data.push_back(4);
SomeClass someClass(std::move(data));
В этом случае вы «переместили» вектор в SomeClass, чтобы избежать копирования, и SomeClass «взял на себя ответственность» за «данные».