Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Возможности по интроспекции в C++ традиционно убогие. Даже если и удастся сколхозить сколько-нибудь универсальное решение, это будет такой чудовищно уродливый костыль, что проще (и надежнее) отдельно выписывать вручную все размеры константами, и сравнивать с ними, уповая на то, что одинаковой ошибки сразу во всех местах не случится. Да, это будет криво и примитивно, но другие решения будут еще кривее, разве что эту кривизну худо-бедно удастся замести под ковер.
Спасибо, но не очень понимаю, что в моем случае даст выписывание вручную — весь смысл задачи в том, чтобы проконтролировать полноту перечисления полей.
Супер универсальности не нужно, достаточно покрыть самые нужные кейсы. На виртуальное наследование можно забить. На поддержку компиляторов кроме GCC можно забить.
Даже на формальное UB можно закрыть глаза, если сейчас по факту это будет работать на GCC.