Из [5.3.3/1] я обнаружил, что:
Оператор sizeof не применяется к выражению, которое имеет функцию или неполный тип
Из [3.9/5] Я обнаружил, что:
Неполно определенные типы объектов и cv void являются неполными типами
В любом случае, для sizeof
не оценивает его операнды, я бы сказал, что sizeof(void())
является юридическим выражением (на самом деле GCC компилирует его, а результат равен 1).
С другой стороны, из здесь, void
не упоминается при обсуждении sizeof
, ни когда упомянуты типы с размером 1, ни в списке которые имеют определенный размер реализации.
Возникает вопрос: есть ли sizeof(void())
юридическое выражение?
Гарантируется ли размер равным 1?
Или это юридическое выражение, приводящее к UB и что все?