http://d.puremagic.com/issues/show_bug.cgi?id=11206
--- Comment #8 from Maxim Fomin <ma...@maxim-fomin.ru> 2013-10-09 23:19:45 PDT --- (In reply to comment #6) > (In reply to comment #5) > > Claim is follows: this is a D valid code. > > OK. > > > Backing: > > 1) AGG(1) is a struct literal (struct spec page). Note, that struct literal > > really means struct literal, not "default struct constructor" or "implicit > > function call" or "call expression" or any other 'creative' understaning of > > language rules. > > 2) Struct literal contains member initializers which should match in order > > and > > type to struct member initializer (struct spec page + TDPL). > > 3) Integer literal is valid initializer for static array of ints (TDPL). > > How do you define "is a valid initializer"? The struct page > (http://dlang.org/struct.html ?) doesn't actually define it (nor does it > define > much on what is or isn't a valid construction type. TDPL has explicit example in the beginning of fixed array chapter. > In my original case, S can be initialized by int, so isn't int a valid > initializer for S? If not, why not? Just because? This is what is throwing me > off. struct S{int i;this(int){}} struct AGG(T) { T t; } void main() { AGG!S ts2 = AGG!S(S(2)); //Explicit. Good. AGG!S ts1 = AGG!S(1); //NO! ILLEGAL REQUEST FOR IMPLICIT CONSTRUCTION! } Second does not work because S(1) is not a struct literal but a constructor call. AGG!S(1) initializer now would require function call S.__ctor(1) which is not currently supported. > Seems the root argument is that static arrays are the *only* type that can be > initialized form a type that is not implicitly "it", and that this special > rule > applies *only* during aggregate construction. It seems you starting to understand the issue (but I haven't thought whether static arrays are only types supporting this). > I see neither of the two points explained in struct.html, nor array.html ? It is in TDPL. Anyway this feature was working for years. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------