Talking about the actual example from bug report:
```d
//2 modules with unambigiuos template function
module m2;

void split(T)(T k)
    if(is(T : int)){}

//second one
module m;

void split(T)(T k)
    if(is(T : string))
{
}

//another one to call them
import m;
import m2: split; //removing : split makes it work

void main(){
    split("abc");
    split(123);
}
```

Is a real problem and been plaguing Phobos std.regex.replace for about 4 years now (even before the re-write).

In any case I assume (and in fact this is more useful) that selective import makes only a subset of symbols visible but otherwise works *just like* simple import. Same with renamed imports that make a subset of symbols visible but with other names *as if* they were imported. 

I take it that imported symbols are 2-nd class compared to local overload sets and hence all versions of import should introduce the same *weak* kind of symbols (except for static import).