CL, я уже видел ваши цитаты и согласен, что они полностью актуальны, но даже после прочтения я не был уверен, определен ли код.
6.3.1.1.2 говорит о целочисленных акциях:
Да, но целочисленные правила продвижения применяются только в том случае, если продвижение действительно проводится. Я не думаю, что мой пример требует продвижения по службе. Точно так же, если вы делаете
char ch;
sizeof ch;
... тогда ch также не повышен.
Я думаю, что здесь мы имеем дело непосредственно с типом битового поля.
Я также видел вывод 1 gcc, в то время как многие другие компиляторы (и даже другие версии gcc) этого не делают. Это не убеждает меня в том, что код является недопустимым , потому что размер также может быть достаточно определен реализацией, чтобы сделать результат несовместимым для нескольких компиляторов.
Однако меня смущает вопрос о том, может ли код быть неопределенным, потому что ничто в стандарте, похоже, не указывает, как обрабатывается случай sizeof bitfield.