Seems like this is a CTFE-only issue? import std.stdio; struct A { int store; this(int a) { store = a << 3; //... } } A a = 5; // Error: cannot implicitly convert expression (5) of type int to A void main() { A a = 5; // fine writeln(a.store); // prints 40 }