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