T.init, struct destructors and invariants - should they be called?

FeepingCreature feepingcreature at gmail.com
Fri Jul 6 12:31:50 UTC 2018


On Friday, 6 July 2018 at 12:10:58 UTC, Simen Kjærås wrote:
> The rest looks sensible to me, but I have to say this is 
> bollocks. This Nullable never has to construct an S.init:
>
> struct Nullable(T) {
>     ubyte[T.sizeof] _payload;
>     bool _hasValue;
>

Come on, at least make it a union with a void[]. This way will 
fail with any struct that requires a certain alignment. Not to 
mention that you can stick a class in it and it'll be garbage 
collected, because ubyte[] must not store pointers to GC memory.

Which makes the point, really - this is an utterly blatant, 
unreliable, fragile hack.


More information about the Digitalmars-d mailing list