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.