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)我想Class是AA和Member是int&或int.所以我甚至不需要指针本身,但它的类型将允许检索类类型和成员类型.
如何获取引用(成员)的指针?
您无法获得指向(或引用或引用数组)的指针.在C++中没有"指向引用的指针"这样的类型.这是因为引用不需要存储,因此甚至可能没有存储引用的地址.
在引用上应用addressof运算符时,获得的是所引用的对象的地址.