Информация об изменениях

Сообщение Re[32]: offsetof() без UB от 28.03.2025 14:25

Изменено 28.03.2025 14:26 rg45

Re[32]: offsetof() без UB
Здравствуйте, kov_serg, Вы писали:

_>Еще вариант где мешает. Если бы был 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


Твою мотивацию я понял. Тем не менее, несмотря на определенные неудобства, концептуально более чистым мне видится текущая имплементация, когда выражения &D::a и &A::a имеют один и тот же тип и одно и то же значение. В то же время, достаточно веских оснований для того, чтобы отстаивать свою позицию у меня нет. Скорее всего, это просто привычка и закреплённый временем и практикой стереотип.
Re[32]: offsetof() без UB
Здравствуйте, kov_serg, Вы писали:

_>Еще вариант где мешает. Если бы был 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


Твою мотивацию я понял. Тем не менее, несмотря на определенные неудобства, концептуально более чистым мне видится текущая имплементация, когда выражения &D::a и &A::a имеют один и тот же тип и одно и то же значение. В то же время, достаточно веских доводов для того, чтобы отстаивать свою позицию у меня нет. Скорее всего, это просто привычка и закреплённый временем и практикой стереотип.