在 [expr]/7 中我们可以读到:
总的来说,这个规则的作用是命名右值引用 被视为左值和对对象的未命名右值引用 视为 xvalues;对函数的右值引用被视为 左值是否命名。
我想知道如何从这个规则中推断出命名右值引用应该被视为左值?顺便说一句,我相信文本在使用上面的术语“此规则”时指的是 [expr]/7。
在您所指的 N4527 中,您可以在 [expr.prim.general]/8 中找到规则:
一个identifier是一个id-expression,前提是它已经被适当地声明(第7条)。 [ ... ] 表达式的类型是 identifier 的类型。结果是由标识符表示的实体。如果实体是函数、变量或数据成员,则结果为左值,否则为纯右值。
所以即使声明的类型是右值引用,变量的名称也始终是左值。如果您在类范围内并引用具有声明类型右值引用的非静态数据成员,则适用关于数据成员的部分;在那种情况下你也会得到一个左值。