struct S { this(A...)(A) { static assert(0, "It compiles?!"); } } void main() { auto s = S(); }
templated constructor this(A...)(A) is not matched for empty argument list, for both structs and classes, tested on DMD64 D Compiler v2.073.0
Default constructors are not allowed for structs, therefore the templated one is only going to get matched once you provide at least one argument. This is the correct behavior.