Я использую следующее для 16-байтового выравнивания 4-элементного массива с плавающей точкой в классе
class Foo
{
// ... some code
private:
alignas(16) float array[4];
};
Переменная не выровнена. Это почему? Я предполагаю, что выравнивание зависит от выравнивания экземпляра Foo
, поскольку внутреннее смещение переменных-членов является статическим и не корректируется во время выполнения. Это правильно или я что-то упустил? Таким образом, одна вещь, которую нужно исправить, это выровнять Foo с чем-то >=16
так, чтобы внутренние смещения были фиксированными?