Почему профсоюзы, в которых есть члены с разным контролем доступа, не являются стандартными?

§9.0

7. Класс S является классом стандартной компоновки, если он:

(7.3) имеет одинаковый контроль доступа (пункт 11) для всех нестатических элементов данных,

8 Структура стандартного макета - это класс стандартного макета, определенный структурой ключ-класс или класс-ключ. Объединение стандартного макета - это класс стандартного макета, определенный с помощью объединения ключ-класс.

AFAICT, §9.0.7.3 существует из-за §9.2.13

13 Элементы нестатических данных (не объединяющего) класса с одинаковым контролем доступа (раздел 11) распределяются таким образом, чтобы более поздние члены имели более высокие адреса в объекте класса. Порядок распределения нестатических элементов данных с различным контролем доступа не определен (раздел 11). Требования выравнивания реализации могут привести к тому, что два смежных элемента не будут выделяться сразу после друг друга; то же самое касается требований к пространству для управления виртуальными функциями ( 10.3) и виртуальными базовыми классами ( 10.1).

Однако это не относится к объединениям, поскольку все (не статичные данные) члены объединения имеют один и тот же адрес. Это дефект в стандарте? Или есть какая-то веская причина, почему я этого не вижу?

1 ответ

Мне кажется, что преимущество множественного доступа в union дело не перевесило стоимость несоответствия и введенных дополнительных слов.

Другие вопросы по тегам