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.它不应出现在成员声明者的其他地方.(强调我的)
其他人在哪里,如果有的话?
一个突出的案例是普查员
enum arity { one, two };
Run Code Online (Sandbox Code Playgroud)
表达式one和tworvalues(更具体地说,是C++ 0x中的prvalues).另一个是模板非类型参数
template<int *P> struct A { };
Run Code Online (Sandbox Code Playgroud)
表达式P也是一个rvalue(更具体地说,是C++ 0x中的prvalue).
true和falsebool类型的prvalues.nullptr是一个类型的prvalue nullptr_t.xvalue该表达式的上下文中的一个,并且a xvalue是一个rvalue(符合§3.10/ 1).可能会有更多,但这些都是我现在可以想到的(第三个是有问题的 - 它实际上是xvalue的表达式,但有类似的东西return x;(哪里x是局部变量,你要返回值,不是引用),变量的名称是表达式.名称实际上是指glvalue,在表达式中,值(但不是真正的名称)被转换为xvalue(这是一个右值).