Inner function overload bug?

Philippe Sigaud philippe.sigaud at gmail.com
Wed Jan 9 05:21:58 PST 2013


On Wed, Jan 9, 2013 at 12:52 PM, Era Scarecrow <rtcvb32 at yahoo.com> wrote:

>> That's weird. Why does that work? Directly pasting the mixin content in
>> main() does not compile, right?
>
>  I can only assume if it does work, that the mixin template has it's own
> scope that enables the overloading. If you can't do it with one, you
> shouldn't be allowed to do it with the other.

That must be it. mixin can have names (mixin TemplateName AliasName;)
which the functions as a disambiguator.
I don't have access to a D compiler right now. Does this work?:


void main()
{
    {
        void test(ref int x) { x = test(); }
        int test() { return 1; }
    }
    int x;
    test(x);
    assert(x == 1);
}



>  Overloading within nested functions is likely a rare use case.

I hit it while trying to change a module from struct+methods to purely
functions everywhere, to see if there were any efficiency difference.


More information about the Digitalmars-d-learn mailing list