右值到左值的转换?

新手上路,请多包涵

为什么不能将右值转换为左值?但是,可以在相反的方向进行转换。从技术上讲,右值确实有一个内存地址,不是吗?

原文由 user8194556 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 931
1 个回答

你可以:

 int&& x = 3;

x 现在是左值。一个所谓的 ‘rvalue-reference’ 可以 绑定到一个临时的,但是任何有名字的东西 都是一个 lvalue ,所以你需要 forward<>() 如果你需要它的右值返回。

请注意,通过将临时值绑定到右值引用(或 const 引用)可以延长其生命周期。从技术上讲,演员是可能的,但不推荐,因为临时演员的生命周期很短,所以你通常会得到一个悬空的参考。

原文由 sp2danny 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题