On Saturday, 17 October 2020 at 12:35:37 UTC, Per Nordlöw wrote:
On Friday, 16 October 2020 at 21:26:12 UTC, Steven
Schveighoffer wrote:
To further explain this -- the padding is added so things like
pointer arithmetic on an array work.
In my code sample above one can only access the first element
anyhow so I don't understand why this restriction is imposed
here.
struct S
{
int i;
bool b;
}
struct T
{
S s; // reinterpreting this as an array can only access
this first element anyway
char c; // so why can't this be aligned directly after `s`
without any padding?
}
So AFAICT the key question becomes:
Can `align`s be inserted in S or/and T so that T is packed to 8
bytes but still aligned to 8 bytes? I don't see why this
shouldn't be the default behaviour...