Ответ 1
Да, вы можете прочитать другой член в этом частном случае.
Это то, что должен сказать стандарт С++ 11/14:
9.5 - Союзы
В объединении может быть активным не более одного из нестатических элементов данных в любое время, то есть значение не более одной нестатической информации члены могут быть сохранены в союзе в любое время.
Но заметка сразу после раздела делает ваш конкретный экземпляр законным, так как для упрощения использования союзов делается одна специальная гарантия:
[Примечание. Если соединение стандартного макета содержит несколько стандартных макетов структур, которые имеют общую начальную последовательность (9.2), и если объект этого типа стандартного макета объединяет один из стандартных макетов структур, разрешено проверять общую начальную последовательность любого элементов структуры стандартного макета; см. 9.2. -end note]
И ваш struct
действительно разделяет общую начальную последовательность:
9.2.16 - Члены класса
Общая начальная последовательность двух стандартных макетов struct (раздел 9) - это самая длинная последовательность нестатических данных членов и бит-полей в порядке объявления, начиная с первого такой объект в каждой из структур, так что соответствующие объекты имеют совместимые с макетами типы, и ни одна из них не является битовым полем или оба являются битовыми полями с одинаковой шириной.