继我对此做出的评论之后:
将std :: vector传递给构造函数并移动语义
是否std::move在下面的代码中是必要的,以确保返回的值是xvalue?
std::vector<string> buildVector()
{
std::vector<string> local;
// .... build a vector
return std::move(local);
}
Run Code Online (Sandbox Code Playgroud)
我的理解是这是必需的.我经常看到std::unique_ptr从函数返回时使用的这个,但是GManNickG发表了以下评论:
我的理解是,在一个return语句中,所有局部变量都是自动xvalues(到期值)并将被移动,但我不确定它是否仅适用于返回的对象本身.所以OP应该继续把它放在那里,直到我更加自信它不应该是.:)
任何人都可以澄清是否std::move有必要吗?
行为编译器是否依赖?