В последней версии стандарта c ++ 11 глава 3.11 говорит о выравнивании.
Позже, глава 7.6.1 определяет, как определить выровненные структуры (или переменные?)
Если я определю структуру следующим образом:
alignas(16) struct A
{
int n;
unsigned char[ 1020 ];
};
означает ли это, что все экземпляры класса A будут выровнены до 16 байтов?
Или я должен сделать это, как в следующем коде?
struct A
{
char data[300];
};
alignas(16) A a;
Если оба примера неверны, как это сделать правильно?
PS Я не ищу решение, зависящее от компилятора.