Почему профсоюзы, в которых есть члены с разным контролем доступа, не являются стандартными?
§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
дело не перевесило стоимость несоответствия и введенных дополнительных слов.