У меня есть две структуры
struct A
{
int a, b;
};
struct B
{
A c, d;
};
Я хотел бы получить указатель на член b
внутри d
.
&B::d.b; // int B::*
Самое близкое, что я мог бы получить, это получить его смещение.
offsetof(B, d.b) // size_t
Но это не имеет информации о размере или типе, поэтому лучшее, что я мог сделать, это сделать макрос, которыйпередает смещение и тип вместе, но не как int B::*
.
Есть ли стандартное решение для этого? Есть ли какое-то нестандартное решение для этого?
Что касается нестандартного направления, я думал о создании шаблона, который будет использоваться как T<&B::d, &A::b>
и будет интерпретировать смещения и добавлять их вместе, но я не уверен, как это сделатьпереосмысление части.
Я использую C ++ 17 с последним XClan Clang на MacOS.