Type inference and overloaded functions

FreeSlave freeslave93 at gmail.com
Mon Dec 9 22:47:38 PST 2013


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].


More information about the Digitalmars-d-learn mailing list