问问题
280 次
2 回答
9
一个突出的案例是枚举器
enum arity { one, two };
表达式one
和two
是右值(更具体地说,是 C++0x 中的右值)。另一个是模板非类型参数
template<int *P> struct A { };
该表达式P
也是一个右值(更具体地说,C++0x 中的右值)。
于 2011-05-28T21:17:16.460 回答
8
- 布尔文字
true
和false
是布尔类型的纯右值。 nullptr
是类型的prvaluenullptr_t
。- 当您从函数返回命名变量时,它
xvalue
在该表达式的上下文中变为 an,并且 anxvalue
是 anrvalue
(根据 §3.10/1)。
可能还有更多,但目前我能想到的只有这些(第三个是有问题的——它实际上是 xvalue 的表达式,但有类似的东西return x;
(哪里x
是局部变量,你正在返回值,不是引用),变量的名称是表达式。名称实际上是指一个glvalue,并且在表达式中该值(但不是真正的名称)被转换为一个xvalue(它是一个右值)。
于 2011-05-28T15:04:14.787 回答