是否有一个rvalue,我可以直接取一个地址?

时间:2017-08-14 19:03:57

标签: c++ c++14 language-lawyer rvalue value-categories

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

有没有办法获得rvalue我可以直接取一个地址(例如像&(<rvalue>)那样是一个有效的表达式,而不会覆盖operator&())?

或许至少可以通过&#39;绑定&#39;到另一个右边? (这似乎并非如此,因为我们只能将参考文件绑定到左值,参见上文。但也许我在这里错过了一些类似的概念。)

我试图回答的更普遍的问题是以下是否正确:rvalues严格对应于一组可以直接获取地址的表达式,除了左值位域和其他一些这样的&#39 ;特&#39;各种左右。

1 个答案:

答案 0 :(得分:3)

[expr.prim.id.qual]

  

nested-name-specifier 表示一个类,可选地后跟   关键字template([temp.names]),然后是名称   该类([class.mem])或其基类之一的成员   类,是 qualified-id ; [class.qual]描述了名称查找   出现在qualified-ids中的类成员。结果是成员。   结果的类型是成员的类型。 结果是   如果成员是静态成员函数或数据成员,则左值   否则为prvalue。

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