Alias type with different initialiser.

Bastiaan Veelo via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Feb 13 07:28:34 PST 2017


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);
   }



More information about the Digitalmars-d-learn mailing list