如何获取引用成员的指针?

Vah*_*agn 6 c++ gcc reference pointer-to-member argument-deduction

考虑以下代码:

struct AA
{
    int& rr;
};
Run Code Online (Sandbox Code Playgroud)

有没有办法获得指针(或可能参考),AA::rr以获得这个?

AA* aa;
auto mm = &AA::rr; // error: cannot create pointer to reference member ‘AA::rr’
aa ->* mm;
Run Code Online (Sandbox Code Playgroud)

此外,在gcc-7.0.1 decltype(AA::mm)仅仅是int&.这是根据标准吗?这有道理吗?


编辑

对不起,伙计,我提出的问题并不是很好.没有人抱怨引用不是对象或者没有指向引用的指针.目标很自私.鉴于struct AA { int& rr; };我只想拥有这样的函数:

template < typename Class, typename Member >
void test(Member Class::*) { }
Run Code Online (Sandbox Code Playgroud)

在调用的时候test(&AA::rr)我想ClassAAMemberint&int.所以我甚至不需要指针本身,但它的类型将允许检索类类型和成员类型.

eer*_*ika 6

如何获取引用(成员)的指针?

您无法获得指向(或引用或引用数组)的指针.在C++中没有"指向引用的指针"这样的类型.这是因为引用不需要存储,因此甚至可能没有存储引用的地址.

在引用上应用addressof运算符时,获得的是所引用的对象的地址.