UFCS for struct opCall?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Apr 9 08:56:11 PDT 2013


On 4/9/13 11:43 AM, deadalnix wrote:
> On Tuesday, 9 April 2013 at 15:29:42 UTC, Andrei Alexandrescu wrote:
>> They are different than regular functions by necessity. A constructor
>> must start on an raw object ("unprepared" in a sense) and bring it to
>> a meaningful state. In the case of immutable and const objects, that
>> grants the constructor special characteristics that are very unlike
>> regular functions. So they are special.
>>
>
> They need magic inside, it doesn't need to leak outside.

Agreed.

> As now they are rvalues, this is easy to type the constructor as follow :
>
> struct S {
> T t;
>
> this(T t) {
> this.t = t;
> }
>
> // Becomes.
> static S __ctor(T t) {
> S this = S.init; // Magic !!
> this.t = t;
> return this; // Magic !!
> }
> }
>
> The magic don't need to leak outside.

I'm lost.

Andrei


More information about the Digitalmars-d mailing list