On 3/11/22 04:01, Andrey Zherikov wrote: > There is some inconsistency between templates and template functions as > this works as I want to: > ```d > import std.stdio; > > void f(int i=3)() > { > writeln(i); > } > > void main() > { > f!1; // 1 > f!(); // 3 > f; // 3 > } > ```
Reduced: template T(int i = 3) { enum value = i; } void main() { pragma(msg, T!().value); // Requires T!() } The same inconsistency exists for user-defined type templates as well: struct S(int i = 3) { } void main() { S!() s; // Requires S!() } There has been requests to remove this inconsistency. Might be in bugzilla. Ali