有没有我可以直接获取地址的右值?
Is there an rvalue that I can directly take an address of?
我可以通过绑定到一个引用来获取右值的地址(据我所知,它本身只能被左值引用)。
有什么方法可以获取我可以直接获取地址的右值(即 &(<rvalue>)
将是一个有效的表达式,而无需覆盖 operator&()
)?
或者至少可以通过 'binding' 到另一个右值? (这似乎不是这种情况,因为我们只能 'bind' 引用左值,见上文。但也许我在这里遗漏了一些类似的概念。)
我要回答的更一般的问题是以下是否正确:右值严格对应于一组可以直接获取地址的表达式,除了左值位域和其他一些类似的 'special' 种左值。
A nested-name-specifier that denotes a class, optionally followed by
the keyword template
([temp.names]), and then followed by the name of
a member of either that class ([class.mem]) or one of its base
classes, is a qualified-id; [class.qual] describes name lookup for
class members that appear in qualified-ids. The result is the member.
The type of the result is the type of the member. The result is an
lvalue if the member is a static member function or a data member and
a prvalue otherwise.
也就是说,创建指向非静态成员函数的成员指针是将 &
运算符应用于纯右值。
我可以通过绑定到一个引用来获取右值的地址(据我所知,它本身只能被左值引用)。
有什么方法可以获取我可以直接获取地址的右值(即 &(<rvalue>)
将是一个有效的表达式,而无需覆盖 operator&()
)?
或者至少可以通过 'binding' 到另一个右值? (这似乎不是这种情况,因为我们只能 'bind' 引用左值,见上文。但也许我在这里遗漏了一些类似的概念。)
我要回答的更一般的问题是以下是否正确:右值严格对应于一组可以直接获取地址的表达式,除了左值位域和其他一些类似的 'special' 种左值。
A nested-name-specifier that denotes a class, optionally followed by the keyword
template
([temp.names]), and then followed by the name of a member of either that class ([class.mem]) or one of its base classes, is a qualified-id; [class.qual] describes name lookup for class members that appear in qualified-ids. The result is the member. The type of the result is the type of the member. The result is an lvalue if the member is a static member function or a data member and a prvalue otherwise.
也就是说,创建指向非静态成员函数的成员指针是将 &
运算符应用于纯右值。