Here's a few modules: main.d: import first; // call(double) import second; // aliased: third.call(string) call
void main() { call(5.5); } first.d: void call(double) { } second.d: import third; alias third.call call; third.d void call(string) { } There's a problem here, the function "call" from module first.d is not overloaded against the functions "call" from second.d & third.d when modules first.d and second.d are imported to a separate module. So it appears I can't implicitly overload against two modules, where one module has an alias to a function of another module. The way to work around this would be to add more aliases, this time to both modules in main.d: import first; // call(double) import second; // aliased: third.call(string) call alias first.call call; alias second.call call; void main() { call(5.5); } Is this how it's supossed to be? Btw, this is just a simplified version of the TDPL example, but it was a little vague on whether or not main.d needs those aliases in addition to the alias in second.d.