【发布时间】:2014-08-02 14:50:10
【问题描述】:
我在c++ 14 N3797 工作草案中阅读了有关lvalue 的概念,我对此有疑问。标准说:
秒。 3.10/1 N3797:
表达式根据图 1 中的分类法进行分类。
——一个 左值(所谓的,历史上,因为左值可能出现在 赋值表达式的左侧)指定一个函数或 一个东西。 [示例:如果 E 是指针类型的表达式,则 *E 是 一个左值表达式,指的是 E 所指向的对象或函数 点。再举一个例子,调用一个函数的结果 返回类型是左值引用是左值。 ——结束示例]
乍一看还可以。但是秒。 5/1 N3797 提供了表达式的定义。它说:
表达式是一系列运算符和操作数,它指定一个 计算
现在考虑秒。 5.4/1:
表达式 (T)cast-expression 的结果是类型 T。 如果 T 是左值引用类型或右值,则结果是左值 如果 T 是右值引用,则引用函数类型和 xvalue 对象类型;否则结果是纯右值。
我们知道lvalue 是定义的表达式(即运算符和操作数的序列),lvalue 的结果是lvalue(也是运算符和操作数的序列)。我不清楚表达式如何在评估后返回表达式(左值在我引用的 5.4/1 的引用中返回左值)。
你能解释一下吗?
【问题讨论】:
标签: c++