I just found weird D behavior about inference of array types.
Let's suppose we have these overloaded functions: import std.stdio; void bar(const(int[3]) arr) { writeln("static array"); } void bar(const(int[]) arr) { writeln("array slice"); } // In main we have something like that: int main(string[] args) { bar([1,2,3]); writeln(typeof([1,2,3]).stringof); return 0; }Weird thing is that the static array version of bar is called, but typeof().stringof is int[], not int[3].