On Wednesday, October 21, 2015 08:28 PM, Shriramana Sharma wrote: > Kagamin wrote: > >> http://dlang.org/hijack.html > > Thanks people, but even as per the rules: > > 1. Perform overload resolution independently on each overload set > 2. If there is no match in any overload set, then error > 3. If there is a match in exactly one overload set, then go with that > 4. If there is a match in more than one overload set, then error > > Here there is only one round(real, int) i.e. in the current module and > only one round(real) i.e. in the imported module, so as per rule 3, there > should be a clear resolution. > > So why the conflict then?
Huh. I can't find any specification on this, but apparently the local overload set shadows any imported overload sets completely. I don't know if there's a good reason for this. All I can think of is I don't want some local `write` function to conflict with std.stdio.write. But the local overload set wouldn't need to shadow the others completely for that. It would be enough if it took precedence on conflict.