fat struct style guide?

monkyyy crazymonkyyy at gmail.com
Tue Feb 24 21:56:47 UTC 2026


On Tuesday, 24 February 2026 at 21:37:44 UTC, Kapendev wrote:
> On Tuesday, 24 February 2026 at 19:01:35 UTC, monkyyy wrote:
>> On Tuesday, 24 February 2026 at 18:49:58 UTC, user1234 wrote:
>>> On Tuesday, 24 February 2026 at 16:56:57 UTC, monkyyy wrote:
>>>> [...]
>>>
>>> The tagged union approach is actually faster when you deal 
>>> with a situation such as
>>>
>>> - you only care about final types
>>> - your final types have several bases
>>> - you would cast a lot
>>> - you don't care about nicely looking declarations (e.g SDL 
>>> event, XEvent, etc 🤢)
>>
>> Consider the `old` function, a tagged union would add a layer 
>> of indirection that does nothing.
>
> You get the same type of indirection with a "mega struct" if we 
> are talking about type checking.
> And you will be checking types often in a game.
> There is literally no difference in how a tagged union and a 
> mega struct works if you create a union with members that all 
> share the same first field.
> The only difference will be the size, with tagged unions being 
> smaller and faster to iterate over.

only with a pretty void* cast is accessing a tagged union field 
that happens to line up 0 indirection, everyone here is going to 
tell me to do the safe then and write an abstracted getter that 
gets the .offsetof `age`.

If Im dropping the concept of different layouts, its safe and 
doesnt need the abstraction and not repeating myself defining the 
fields.


More information about the Digitalmars-d-learn mailing list