[Issue 11206] static array can be implicitly built from items, when nested in aggregate
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Oct 10 02:01:11 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11206
Kenji Hara <k.hara.pg at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords|rejects-valid |
--- Comment #14 from Kenji Hara <k.hara.pg at gmail.com> 2013-10-10 02:00:57 PDT ---
(In reply to comment #12)
> > 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
> >
>
> It looks like when you are speaking about struct literal syntax you mean both
> struct literal and struct constructors (probably even opCall). It seems that
> Agg!S(1) would be valid either if there is constructor taking int or first
> member is integer type. Do you consider documenting it after merging
> corresponding pull?
No. I strictly distinguish struct literal and struct constructor call.
struct S1 { int num; } // S1(1) is literal syntax
struct S2 { this(int); } // S2(1) is ctor call
struct S3 { static S3 opCall(int); } // S3(1) is static function call
struct A1(T) { T val; }
struct A2(T) { this(T); }
void main()
{
S1 s1 = 1; // should be NG, int is not implicitly convertible to S1
S2 s2 = 1; // OK. The S2 ctor accepts int value as a valid initializer,
// then it's implicitly invoked for initialization.
S3 s3 = 1; // NG. opCall is completely unrelated to initializing.
// Note that A1!T(...) is always literal syntax
A1!S1 a11 = A1!S1(1); // NG, int is not implicitly convertible to S1
A1!S2 a12 = A1!S2(1); // should be OK, as same as the 's2' case.
A1!S3 a13 = A1!S3(1); // Of course NG.
// Note that A2!T(...) is constructor call
A2!S1 a21 = A2!S1(1); // NG, int is not implicitly convertible to S1
A2!S2 a22 = A2!S2(1); // NG, int is not implicitly convertible to S1
A2!S3 a23 = A2!S3(1); // NG, int is not implicitly convertible to S1
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list