It works with function overload set, but doesn't work with template overload set.
Test case:
-------------------------
module a;
auto foo(int) { return 1; }
template Bar(int n) { enum Bar = 1; }
-------------------------
module b;
auto foo(long) { return 2; }
template Bar(long n) { enum Bar = 2; }
-------------------------
module test;
import a, b;
alias foo = a.foo;
alias foo = b.foo; // OK
static assert(foo(1) == 1); // OK
static assert(foo(1L) == 2); // OK
alias Bar = a.Bar; // test.d(9)
alias Bar = b.Bar; // doesn't work [X]
//static assert(Bar!1 == 1);
//static assert(Bar!1L == 2);
-------------------------
[X]:
test.d(10): Error: alias test.Bar conflicts with alias test.Bar at test.d(9)
Comment #1 by github-bugzilla — 2014-05-14T11:18:33Z