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 шт):
Structured binding структуры не создает N отдельных переменных. Он создает одну, безымянную.
u и v - не отдельные переменные, а сокращенные обозначения полей этой безымянной переменной типа MyStruct.
Поскольку переменная одна, одна выравнивается только вся целиком. Никакие дополнительные отступы между полями из-за alignas не вставляются.