在没有赋值的情况下调用 std::move() 时会发生什么

What happens when std::move() is called without assignment

如果我只使用 std::move 而没有任何赋值会怎样?

std::string s = "Moving";
std::move(s);  //What happens on this line to s?
//is s still valid here?

std::move() 不会自己移动传递的对象;它只是可能为对象启用移动语义。它由一个强制转换组成,您可以将其结果用于 select - 如果可能的话 - 支持移动语义的适当重载。因此,在您的代码中:

std::string s = "Moving";
std::move(s);
上面的

std::move(s)s 转换为 右值引用 。不使用铸造的结果。上面的对象s实际上并没有移动,也没有被修改。