On Wed, 14 Sep 2011 11:42:45 -0400, Christian Kamm <[email protected]> wrote:

Steven Schveighoffer wrote:
I can't remember the name of it, but D just avoids it by not allowing
multiple overload sets.

In any case, it's not a bug, it's by design.

It's not by design. Multiple overload sets are okay, as long as there are no
ambiguities, see Dmitry's example.

The problem is that std.string uses selective imports:

public import std.array : join, split

and that selective imports are still broken. (#314)

Test case:

a.d:
void foo() {}

b.d:
void foo(int) {}

c.d:
public import b : foo;

use.d:
import a;
import b; // breaks if you import c instead
void main() { foo(); foo(1); }

OK, my apologies for not understanding the problem properly (or apparently overload resolution!)

Sorry, I think you are right, it is a bug!

-Steve

Reply via email to