【问题标题】:Non-const reference to temporary works now?现在对临时作品的非常量引用?
【发布时间】:2015-08-31 12:04:51
【问题描述】:

随着移动语义的引入,只能将临时对象绑定到 const 引用的规则是否发生了变化?非常量似乎也能延长生命周期。

 A getA() { return A();}  

 A & aref = getA(); //OK
 string & str = string("h") + string("i"); //OK again

这是使用 msvc,在 main 退出之前不会调用 A 的析构函数。

【问题讨论】:

  • 你使用的是什么版本的 MSVC?

标签: c++ reference move-semantics rvalue temporary-objects


【解决方案1】:

不,规则是一样的,你不能将右值绑定到非 const 左值引用。 MSVC 正在使用(危险的)扩展。

【讨论】:

  • 您能解释一下能够从非常量引用中编辑返回值的危险吗?仅仅是人们可能会尝试返回对它的实际函数范围引用,而不是对临时的别名吗?
  • MSVC 发出警告,指出它是非标准扩展。
猜你喜欢
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
相关资源
最近更新 更多