Discussion Thread: DIP 1035-- at system Variables--Community Review Round 2

Paul Backus snarwin at gmail.com
Fri Feb 26 13:42:18 UTC 2021

On Friday, 26 February 2021 at 09:57:03 UTC, Walter Bright wrote:
> > Example: Short String
> This example boils down to an invariant not being maintained if 
> the struct is void-initialized.

Note that it's not just void initialization. Overlap in a union 
and reinterpreting casts can also create instances with broken 
invariants; e.g.,

union U
     int n;
     ShortString s;

void main()
     U u = { n: 0xDEADBEEF };
     writeln(u.s[]); // undefined behavior

More information about the Digitalmars-d mailing list