【发布时间】:2018-03-16 07:29:29
【问题描述】:
const A& a = A() 和 A&& a = A() 我可以,但为什么我不能A& a = A()?
【问题讨论】:
-
由于过去的一个可能不幸的决定,我想您可能会将仅出现在模板中的转发引用与右值引用混淆。它们共享相同的
&&语法,但它们是完全不同的东西。问题太模糊了。发布 minimal reproducible example 并包含A&& a = A()。 -
@JiveDadson 这个问题对我来说似乎很明显是关于右值引用,而不是转发引用。我回头看看在编辑之前是否可能不清楚,但不,在最初的版本中也很清楚。
-
@hvd +1。我很困惑为什么这个问题被认为是模糊的。如果有人认为它含糊不清,你能告诉我为什么和在哪里吗?否则,将其搁置为不清楚但不告诉不清楚的地方是非常令人困惑的。
-
基本原理是,对临时变量进行突变几乎没有意义,任何这样做的尝试都可能是编程错误,而不是深思熟虑的决定。虽然您有时确实想要改变一个临时值,但它通常是出于与改变左值完全不同的原因(存在右值引用以适应这些情况)。
-
@n.m.我认为这应该是一个答案。
标签: c++ rvalue-reference rvalue