看看这个表达式:
T t;
T& ref = t;
ref
表达式是lvalue
还是rvalue
?我相信它是rvalue
,因为ref
不是< em>“指定函数或对象” :
“左值(之所以被称为,是因为左值可能会出现在 赋值表达式的左侧)指定一个函数 或对象。”
[标准草案n3092]
根据cppreference,引用不是对象。
“以下实体不是对象:值,引用[...]”
我很怀疑,因为ref
位于=
的左侧。
答案 0 :(得分:5)
我有疑问,因为ref位于=的左侧。
ref
是一个名称,因此是一个左值。
我认为这是一个右值,因为ref并不“指定函数或对象”
它指定与t
相同的对象。
答案 1 :(得分:4)
引用确实指定了功能或对象!它的字面意义与标准中的一样!参见CaryKH:
如果表达式最初的类型为“对T的引用”([dcl.ref],[dcl.init.ref]),则在进行任何进一步分析之前,将类型调整为T。 表达式指定引用所表示的对象或功能,[...]