digitalmars.D.bugs - [Issue 8938] New: static struct initializer allows to not explicitly initialize members with disabled constructor
- d-bugmail puremagic.com (45/45) Nov 02 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8938
http://d.puremagic.com/issues/show_bug.cgi?id=8938 Summary: static struct initializer allows to not explicitly initialize members with disabled constructor Product: D Version: D2 Platform: All OS/Version: All Status: NEW Keywords: accepts-invalid Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: verylonglogin.reg gmail.com --- Comment #0 from Denis Shelomovskij <verylonglogin.reg gmail.com> 2012-11-02 17:46:46 MSK --- Current behavior: --- struct S0 { disable this(); } struct S { int i; S0 s0; } static assert(!__traits(compiles, { S0 s; })); static assert(!__traits(compiles, { S0 s = S0(); })); static assert( __traits(compiles, { S0 s = S0.init; })); static assert(!__traits(compiles, { struct S1 { S0 s0; this(int) { } } })); static assert(!__traits(compiles, { S s; })); static assert( __traits(compiles, { S s = S(5, S0.init); })); static assert(!__traits(compiles, { S s = S(); })); // assert failure static assert(!__traits(compiles, { S s = S(5); })); // assert failure static assert(!__traits(compiles, { S x = { }; })); // assert failure static assert(!__traits(compiles, { S x = { i:1 }; })); // assert failure --- It looks inconsistent because this is disabled: --- struct S1 { int i; S0 s0; // Error: constructor main.S1.this field s0 must be initialized in constructor this(int i) { this.i = i; } } --- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Nov 02 2012