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