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);
}

Reply via email to