https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93209
--- Comment #2 from John Adriaan <John.Adriaan at BigPond dot com> --- Wow: I just realised. The following code for my proposal is problematic: struct S { bool b : 1; unsigned i : 1; unsigned : 0; char c : 8; }; // S Should `c` be aligned at one byte (its field) or four bytes (the padding field) after the beginning of `S`? According to the current implementation, it's four bytes - so again, the padding `: 0` operator seems to be the overriding by its own type, not that of the following field. Also note that removing the `: 0` field pulls `c` back to a (padded) position six bits _after_ `i`