https://issues.dlang.org/show_bug.cgi?id=20941
Issue ID: 20941 Summary: __traits(getMember) should not allow safe code to access private fields Product: D Version: D2 Hardware: x86 OS: Mac OS X Status: NEW Severity: enhancement Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: and...@erdani.com This is taken from DIP 1035: struct S { private union { int x; int* y; } private int tag; // x if 0, y if 1 // public @trusted interface follows void set(int rhs) @trusted { if (tag == 0) x = rhs; else *y = rhs; } .... } Allowing safe code to modify tag from @safe code, followed by calling set(), results in unsafe code from safe functions. This could be relaxed to restrict access only for types that have @trusted functions. --