struct Internal { int i; double d; string s; }

struct External_int {
  Internal internal;
  @property Internal* ptr () { return &internal; }
        
  this (int a)
  {
    internal.s = "int";
    internal.i = a;
  }
}

struct External (T) {
  Internal internal;
  @property Internal* ptr () { return &internal; }
        
  static if (is(typeof(T) == int))
  {
    this (T a)
    {
      internal.s = "int";
      internal.i = a;
    }
  }
}

void main ()
{
  auto e1 = External_int(1); // Ok
  auto e2 = External!int(1); // Nope, cannot implicitly
                             // convert expression (1)
                             // of type int to Internal
}


Why? And how is this fixed? Thanks.

Reply via email to