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

Reply via email to