"symbol wheelbarrowing" = "making symbols in other module(s)
local to the current module"
(described in TDPL at page 148)
The problem:
-----------
module a;
int foo(int)
{
return 42;
}
int bar(T)(int)
{
return 42;
}
-----------
module b;
int foo(char)
{
return 3;
}
int bar(T)(char)
{
return 3;
}
-----------
module main;
import std.stdio;
import a;
import b;
// Works for foo:
alias foo = a.foo;
alias foo = b.foo;
// ...but not for bar:
alias bar = a.bar;
alias bar = b.bar; // Error: [1]
void main()
{
writeln(foo(int.init)); // 42
writeln(foo(char.init)); // 3
//writeln(bar!(int)(int.init));
//writeln(bar!(char)(char.init));
}
1. alias main.bar conflicts with alias main.bar