Alias type with different initialiser.

Daniel Kozak via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Feb 13 08:40:02 PST 2017


Dne 13.2.2017 v 16:28 Bastiaan Veelo via Digitalmars-d-learn napsal(a):

> Hi,
>
> In Extended Pascal, you can derive from a basic type and change the 
> default initialiser like so:
>
>   type int1 = integer value 1;
>   var i : int1;
>       ii : int1 value 2;
>   assert(i = 1);
>   assert(ii = 2);
>
> I have it working in D, but it seems a little clumsy. Is there a 
> better way?
>
>
>   struct initial(T, T val)
>   {
>       private T _payload = val;
>       alias _payload this;
>
>       static initial opCall(T v)
>       {
>           initial s;
>           s._payload = v;
>           return s;
>       }
>   }
>
>   unittest
>   {
>       alias initial!(int, 1) int1;
>       int1 i;
>       assert(i == 1);
>       int1 ii = 2;
>       assert(ii == 2);
>   }
>
https://dlang.org/phobos/std_typecons.html#.Typedef


More information about the Digitalmars-d-learn mailing list