Re[25]: offsetof() без UB
От: kov_serg Россия  
Дата: 27.03.25 15:41
Оценка:
Здравствуйте, rg45, Вы писали:

R>Давай порассуждаем?

R>Легально ли такое использование, или его следует запретить?

R>
R>    D d{};
R>    auto m = &A::a;

R>    std::cout << d.*m << std::endl;
R>


Уже позно запрещать. Не нужно было вводить указатели на неведомую фигню.
У вас есть указатель на typedef? Тут примерно тоже самое. Сами себе создали проблемы и потом в лучщих традициях: породили новую сущность, породили методы работы с ней, но они не стыкуются с уже имеющимися,а и так сойдет.
struct A { int x[2]; };
struct B { A a[2]; };

Вот как записать указатель на поле B::a[1].x[1]. Обычного смещения относительно B было бы достаточно.
struct A { int *x; };
struct B { A *a; };

А вот для такого указателя на поле B::a[1].x[1]. Уже было бы достаточно ввести метод получения адреса, собственно и указатель бы был указателем на этот метод. Но нет это слишком просто.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.