Вопрос 1: всегда ли эти два бита являются младшими значащими битами базового беззнакового целого?Или это зависит от платформы?
Очень зависит от платформы.В стандарте даже есть примечание, чтобы уточнить, сколько:
[class.bit]
1 ... Распределение битовых полей внутри классаОбъект определяется реализацией.Выравнивание битовых полей определяется реализацией.Битовые поля упакованы в некоторый адресуемый блок выделения.[Примечание: Битовые поля размещают единицы размещения на некоторых машинах, а не на других.Битовые поля назначаются справа налево на некоторых машинах, слева направо на других .- примечание к концу]
Вы не можете предполагать что-либо много о структуре объекта битового поля.
Вопрос 2. Всегда ли инициализируются эти неиспользованные 30 битов0?Что стандарт C ++ говорит об этом?
В вашем примере есть простой агрегат, поэтому мы можем перечислить возможные инициализации.Указание без инициализатора ...
T t;
... по умолчанию инициализирует его , оставляя члены с неопределенным значением.С другой стороны, если вы укажете пустые скобки ...
T t{};
... объект будет агрегатно инициализирован , и поэтому битовые поля будут инициализированы с {}
сами, и установить на ноль.Но это относится только к элементам совокупности, которые являются битовыми полями.Не указано, какое значение, если оно есть, принимают биты заполнения.Поэтому мы не можем предполагать, что они будут инициализированы нулем.