1

我可以通过绑定到引用来获取右值的地址(据我所知,它本身只能由左值引用)。

有什么方法可以获取我可以直接获取地址的右值(即 like&(<rvalue>)将是一个有效的表达式,而不是覆盖operator&())?

或者也许至少可以通过“绑定”到另一个右值?(情况似乎并非如此,因为我们只能“绑定”到左值引用,见上文。但也许我在这里遗漏了一些类似的概念。)

我试图回答的更一般的问题是以下是否正确:右值严格对应于一组可以直接获取地址的表达式,左值位域和其他一些“特殊”类型的左值除外。

4

1 回答 1

3

[expr.prim.id.qual]

表示一个类的嵌套名称说明符,可选地后跟关键字template([temp.names]),然后是该类 ([class.mem]) 或其基类之一的成员的名称, 是一个合格的 id;[class.qual] 描述了对出现在限定 ID 中的类成员的名称查找。结果是成员。结果的类型是成员的类型。如果成员是静态成员函数或数据成员,则结果为左值,否则为纯右值。

也就是说,创建指向非静态成员函数的成员指针是将&运算符应用于纯右值。

于 2017-08-14T19:13:49.227 回答