感觉属于奇技淫巧吧
这句定义了一个偏特化后的类型,它有个静态成员tr
template struct PtrTaker<&A::data_>;
然后tr的构造里又把Access类型里的静态成员ptr给初始化了
这句
a.*Access<int A::*>::ptr
可以拆成两句:
p = Access<int A::*>::ptr; // Access<int A::*>::ptr 是在静态成员tr的构造里初始化好的
a.*p // 这个是解引用“指向类成员的指针”
这个就是你那个例子
https://nimrod.blog/posts/cpp-how-to-access-private-members-validly/
这最后有一句:
https://github.com/martong/access_private
MSVC输出10,但是gcc输出是2560
--
修改:z16166 FROM 114.241.225.*
FROM 114.241.225.*