Здравствуйте, A.J., Вы писали:
AJ>что в моем случае даст выписывание вручную — весь смысл задачи в том, чтобы проконтролировать полноту перечисления полей.
Вот и контролируйте вручную — копируете структуру, вставляете в нужное место, и руками преобразуете определение каждого поля в проверку смещения/размера, хоть через static_assert, хоть через assert. Если в будущем кто-то поменяет параметры структуры, соответствующие assert'ы сработают.
Да, это коряво, но извращаться с убогими средствами недо-интроспекции C++ — еще корявее.
AJ>На поддержку компиляторов кроме GCC можно забить. Даже на формальное UB можно закрыть глаза, если сейчас по факту это будет работать на GCC.
Предложенный способ будет работать всегда и везде.