rvalues有什么名字?

Xeo*_*Xeo 13 c++ rvalue named c++11

@FredOverflow在C++聊天室提到,this是一个罕见的rvalues具有名称的情况.C++ 0x FDIS提到5.1.1 [expr.prim.general] p4:

否则,如果member-declarator声明类X的非静态数据成员(9.2),则表达式this可选的brace-or-equal-initializer 中类型为"指向X的指针"的prvalue.它不应出现在成员声明者的其他地方.(强调我的)

其他人在哪里,如果有的话?

Joh*_*itb 9

一个突出的案例是普查员

enum arity { one, two };
Run Code Online (Sandbox Code Playgroud)

表达式onetworvalues(更具体地说,是C++ 0x中的prvalues).另一个是模板非类型参数

template<int *P> struct A { };
Run Code Online (Sandbox Code Playgroud)

表达式P也是一个rvalue(更具体地说,是C++ 0x中的prvalue).


Jer*_*fin 8

  1. 布尔文字truefalsebool类型的prvalues.
  2. nullptr是一个类型的prvalue nullptr_t.
  3. 当您从函数返回一个命名变量时,它将成为xvalue该表达式的上下文中的一个,并且a xvalue是一个rvalue(符合§3.10/ 1).

可能会有更多,但这些都是我现在可以想到的(第三个是有问题的 - 它实际上是xvalue的表达式,但有类似的东西return x;(哪里x是局部变量,你要返回值,不是引用),变量的名称表达式.名称实际上是指glvalue,在表达式中,值(但不是真正的名称)被转换为xvalue(这是一个右值).