On Saturday, 12 April 2014 at 16:45:02 UTC, Philpax wrote:
While trying to overload a function in local/function scope, I
ran into this behaviour: http://dpaste.dzfl.pl/b4e8b9ddf78a and
I was wondering what the cause was.
As far as I can tell, this should be fine in global scope (and
it is), but I'm curious as to why it doesn't work inside a
function.
I *think* it has something to do with how name-mangling is done.
I don't know the details. I know you can workaround it by putting
your functions a static members of a dummy struct:
http://dpaste.dzfl.pl/268e3d2d4427
class A {}
class B {}
void main()
{
static struct Dummy
{
static void func2(A a){}
static void func2(B b){}
}
alias func2 = Dummy.func2;
A a;
func2(a);
}