class Base
{
    public void Foo(A a)
    {
        writeln("Base.Foo(A a)");
    }

    public void Foo(B a)
    {
        writeln("Base.Foo(B a)");
    }
};

Compiler properly resolves forward references. Therefore, it's definitely a compiler bug, and the template version should be accepted.

I filed the issue in bugzilla:
https://issues.dlang.org/show_bug.cgi?id=14083

And will open a new pull request to fix compiler.

Kenji Hara

In the mean time I've found removing the overridden methods from the Base class, works with templates.

Reply via email to