何时应该在函数返回值上使用std :: move?在这种情况下struct Foo {};Foo meh() { return std::move(Foo());}我很确定移动是不必要的,因为新创建的Foo将是一个xvalue。但在这种情况下呢?struct Foo {};Foo meh() { Foo foo; //do something, but knowing that foo can safely be disposed of //but does the compiler necessarily know it? //we may have references/pointers to foo. how could the compiler know? return std::move(foo); //so here the move is needed, right?}我认为需要采取行动吗?
3 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
在这两种情况下都不需要这样做。在第二种情况下,std::move
因为你按值返回一个局部变量是多余的,编译器会理解,因为你不再使用那个局部变量,所以它可以被移动而不是被复制。
- 3 回答
- 0 关注
- 2051 浏览
添加回答
举报
0/150
提交
取消