将参数作为右值引用传递只是为了清楚地表明您将要操纵参数是否是一个好主意?有点像 const 正确性的反面。
例如,这个函数接受一个字符串向量,以某种方式对其进行操作并返回一个布尔值:
static bool isThisSomething(std::vector<string>&& input1);
现在如果调用者想用左值调用这个函数,他必须使用std::move()
并承认这个向量会被弄乱。这应该可以防止意外的副作用。
std::vector<std::string> lvalueVector = {"foo", "bar"};
bool somethingness = isThisSomething(std::move(lvalueVector));
澄清:
所做
的操作isThisSomething
只是一些内部逻辑的一部分,对调用者来说似乎是无稽之谈。