Я пробовал это
struct Foo(T)
{
align(8) void[T.sizeof] data;
}
, но
static assert(Foo!(int).data.alignof == 8);
терпит неудачу, говоря мне, что выравнивание все еще 1
вместо 8
.
Почему это так и как это исправить, чтобы оно работало для любого произвольного выравнивания, являющегося степенью 2 (а не только 8)?