Replying to Arthur and Lénárd in series below . . .


On Sunday, December 10, 2023, Arthur O'Dwyer wrote:

However, I don't think Frederick has realized yet that his "packed TokenInfo" (where the attribute cracks open the curly braces and applies itself to all subobjects recursively) is-not-a kind of "TokenInfo". There are things you can do with a "TokenInfo" which you physically cannot do with such a "packed TokenInfo." One example is "fetch its `c` member with an aligned load instruction" (because the packed TokenInfo's `c` is misaligned). Another example is "evaluate `&p->c` and have it give you a pointer of type `long unsigned*`" (because the language assumes that it's always safe to load from a `long unsigned*` using an aligned load instruction).



I wasn't forgetting about this -- I addressed it with my proposed three rules in my original post:

    https://lists.isocpp.org/std-proposals/2023/12/8533.php


Lénárd posted the same day:
> And lift the ban on specifying
> lower than the types alignment
> for members.


Actually it would be interesting if we could do the following:

   struct Monkey {
        alignas(1) long unsigned a;
        alignas(1) char b;
        alignas(1) long unsigned c;
        alignas(1) char d;
    };