On Fri, Nov 20, 2009 at 3:34 PM, Walter Bright
<newshou...@digitalmars.com> wrote:
> Bill Baxter wrote:
>>
>> Here's one thing I just found:
>> struct constructors don't work at compile-time:
>>
>> struct Struct
>> {
>>    this(int _n, float _x) {
>>        n = _n; x = _x;
>>    }
>>    int n;
>>    float x;
>> }
>>
>> enum A = Struct(1,2);
>>
>> // Error: cannot evaluate ((Struct __ctmp1;
>> // ) , __ctmp1).this(1,2F) at compile time
>>
>> The C-style initializer works.
>> static opCall works too.
>>
>> But if that bug is fixed, then I can't think of a reason to have the
>> classic C-style no-colons syntax.
>
> It isn't a bug. You simply don't need constructors that progressively assign
> parameters to fields.
>
>   Struct(1,2);
>
> works just fine without that constructor being defined.

Right, but if you do define it (in order to do something extra upon
initialization -- validate inputs or what have you) then it no longer
works at compile time.

--bb

Reply via email to