VS2019 alignas в определении структуры отменяет пакет прагмы ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
VS2019 alignas в определении структуры отменяет пакет прагмы

Сообщение Anonymous »

Я пытаюсь упаковать структуру «Test» с помощью пакета #pragma.
В VS2019 16.7.2 следующее статическое утверждение завершается с ошибкой.

Код: Выделить всё

struct alignas(4 * sizeof(float)) Vec4
{
float x,y,z,w;
};

#pragma pack(push,1)
struct Test
{
char f;
Vec4 vec;
};
#pragma pack(pop)

static_assert(sizeof(Test) == sizeof(char) + sizeof(Vec4), "Incorrect size.");
Размер Test равен 2*sizeof(Vec4), что показывает, что alignas в самом определении структуры имеет приоритет над пакетом.
Статический утверждение не терпит неудачу в GCC 10.2 или Clang 11.0.0.
Кто-нибудь знает, как упаковать Test по желанию? (без изменения выравнивания структуры Vec4)
Спасибо.
Бен

Подробнее здесь: https://stackoverflow.com/questions/644 ... ragma-pack

Вернуться в «C++»