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...

Reply via email to