为了账号安全,请及时绑定邮箱和手机立即绑定

何时应该在函数返回值上使用std :: move?

何时应该在函数返回值上使用std :: move?

C++
蓝山帝景 2019-08-01 15:29:45
何时应该在函数返回值上使用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因为你按值返回一个局部变量是多余的,编译器会理解,因为你不再使用那个局部变量,所以它可以被移动而不是被复制。


查看完整回答
反对 回复 2019-08-01
  • 3 回答
  • 0 关注
  • 2051 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信