Здравствуйте, rg45, Вы писали:
_>>Пока думаешь. Я говорю примерно про такое
R>Да идею-то я понял. Я не понимаю, каким образом тебе мешает то, что выражение &D::a имеет тип int A::*. Что для тебя изменилось бы, если бы тип был int D:*?
Еще вариант где мешает. Если бы был int D::* то
int* (*p1)(D*)=ptr_to<&D::a>; // я бы мог писать так
int* (*p2)(A*)=ptr_to<&D::a>; // а пиходится так
То есть что бы работало в общем виде придётся писать ptr_to<D,&D::a>
ps: И тогда можно вместо offset спокойно использовать этот указатель, при желании преобразовав его в intptr_t