http://d.puremagic.com/issues/show_bug.cgi?id=11206
--- Comment #11 from Kenji Hara <[email protected]> 2013-10-10 01:15:51 PDT --- (In reply to comment #9) > As I have mentioned previously, there is no inconsistency because you > implicitly assuming that struct literal/constructors can be recursive or > 'nested' in some sense. If you mean allowing AGG!S ts1 = AGG!S(1); in original > example, then this is a minor enhancement. I knot that it is an enhancement (eg. bug 7255), but I think it's necessary to increase consistency between static array and user-defined struct type, and it's important for more expressiveness on initializing. The start of my thought ---- Currently, BigInt accepts built-in integers as the "valid initializer". BigInt num = 1; This is expressive syntax. But, when you declare a multi-dimensional array of BigInt, it would become too verbose. BigInt[128] sa = [ BigInt(1), BigInt(2), BigInt(3), BigInt(4), BigInt(5), BigInt(6), BigInt(7), BigInt(8), ... ]; If T t = v; is allowed, array initializer should also allow T[n] tsa = [v1, v2, ...]; After the enhancement implemented, we will be able to write the BigInt array declaration as: BigInt[128] sa = [1, 2, 3, 4, 5, 6, 7, 8, ..., 128]; ---- The end of my thought I think we could apply the same rule to the relation of struct literal syntax arguments and corresponding struct field type. Agg!S agg = Agg!S(1); // #1 S[1] ssa = [1]; // #2 - In #1, the struct field Agg!S.val is initialized by the corresponding value 1 which is in the struct literal argument list. - In #2, the array element ssa[1] is initialized by the corresponding value 1 which is in the array initializer argument list. In both case, if the initialized storage typed S accepts the corresponding value 1 *as the valid initializer*, the composite array/struct initializing should also work. Additional note: The following code already works currently. Agg!S aggr2 = {val:1}; // struct initializer syntax -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
