UFCS for struct opCall?

deadalnix deadalnix at gmail.com
Tue Apr 9 08:43:30 PDT 2013


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.

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.


More information about the Digitalmars-d mailing list