“ xvalue具有身份”,为什么我不能引用它

时间:2019-12-14 05:37:11

标签: c++ c++11

here弄清楚

  1. “具有身份”:地址,指针,用户可以确定两个副本是否相同。
  2. xvalue:具有身份,可以从(例如,将左值强制转换为右值引用的结果。

here弄清楚

以下表达式是xvalue表达式:
3. a.m,对象表达式的成员,其中a是一个右值,m是非引用类型的非静态数据成员;

here举个例子

struct X { int n; };

X{4};                // prvalue: does not have an identity

X{4}.n;              // xvalue: does have an identity and denotes resources
                     // that can be reused

但是当我尝试使用&cout的地址时,编译器拒绝编译。

X{4}.n

这是否意味着我永远无法获得xvalue的地址?

1 个答案:

答案 0 :(得分:2)

这是标准所说的:[expr.unary.op]/3

  

一元&运算符的结果是指向其操作数的指针。   操作数应为左值或 qualified-id

因此,不能使用&运算符获取右值的地址。