alignas и структура

Читаю книжку и не понял такой момент. У нас есть структура

MyStruct ms{42,"hello"};

И ,как я понимаю, здесь мы выравниваем ее по 16:

alignas(16) auto [u,v] = ms;

И ,как я думаю, u и v должны также быть выравнены по этой границе ,но в книжке написано:"Here, we align the initialized anonymous entity and not the structured bindings u and v. This means that u as the first member is forced to be aligned to 16 while v is not." Хотя на других сайтах увидел, что выравниваются все члены. Я что-то не так понимаю,почему так ? Cпасибо


Ответы (1 шт):

Автор решения: HolyBlackCat

Structured binding структуры не создает N отдельных переменных. Он создает одну, безымянную.

u и v - не отдельные переменные, а сокращенные обозначения полей этой безымянной переменной типа MyStruct.

Поскольку переменная одна, одна выравнивается только вся целиком. Никакие дополнительные отступы между полями из-за alignas не вставляются.

→ Ссылка