Re[24]: offsetof() без UB
От: rg45 СССР  
Дата: 27.03.25 14:50
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>
_>struct A { int a; };
_>struct B : virtual A { int b; };
_>struct C : virtual A { int c; };
_>struct D : B,C { int d; };
_>


R>>Ну потому что поле "a" является членом класса A. И выражение &D::a имеет тип указателя на член класса А. И указатель на член класса A без проблем может быть использован с объектом класса D, как с наследником класса A. А почему должно быть по-другому?


_>Согласен, в c++ если можно сделать через ж... не единообразно то делают именно так.


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

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

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

    std::cout << d.*m << std::endl;
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.