![](/img/trans.png)
[英]Is the expression that allocates memory rvalue expression or lvalue expression?
[英]Is this expression an lvalue or an rvalue?
看看这个表达式:
T t;
T& ref = t;
ref
表达式是lvalue
还是rvalue
? 我相信它是一个rvalue
因为ref
不会“指定一个函数或一个对象” :
“左值(所谓的,历史上,因为左值可能出现在赋值表达式的左侧)指定一个函数或一个对象。”
[open-std draft n3092]
根据cppreference ,引用不是对象。
“以下实体不是对象:值,参考[...]”
我有点怀疑,因为ref
位于=
的左侧。
我有点怀疑,因为ref位于=的左侧。
ref
是一个名称,因此是一个左值。
我相信它是一个右值,因为ref不会“指定一个函数或一个对象”
它指定与t
相同的对象。
引用确实指定了一个函数或对象! 它的字面意思就像标准中的那样! 见[expr.type] / 1 :
如果表达式最初具有“对T的引用”类型([dcl.ref],[dcl.init.ref]),则在进行任何进一步分析之前将类型调整为T. 表达式指定由引用表示的对象或函数 ,[...]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.