如何使用 [expr]/7 推断命名右值引用应被视为左值?

问题描述 投票:0回答:1

在 [expr]/7 中我们可以读到:

总的来说,这个规则的作用是命名右值引用 被视为左值和对对象的未命名右值引用 视为 xvalues;对函数的右值引用被视为 左值是否命名。

我想知道如何从这个规则中推断出命名右值引用应该被视为左值?顺便说一句,我相信文本在使用上面的术语“此规则”时指的是 [expr]/7。

c++ expression language-lawyer
1个回答
0
投票

在您所指的 N4527 中,您可以在 [expr.prim.general]/8 中找到规则:

一个identifier是一个id-expression,前提是它已经被适当地声明(第7条)。 [ ... ] 表达式的类型是 identifier 的类型。结果是由标识符表示的实体。如果实体是函数、变量或数据成员,则结果为左值,否则为纯右值。

所以即使声明的类型是右值引用,变量的名称也始终是左值。如果您在类范围内并引用具有声明类型右值引用的非静态数据成员,则适用关于数据成员的部分;在那种情况下你也会得到一个左值。

© www.soinside.com 2019 - 2024. All rights reserved.