For any signature `void foo(T)(T t)`, calling it with `foo!(typeof(bar))(bar)` is clearly redundant. This case is no different as far as I can see.

I think it's a bug that this compiles at all, it should be ambiguous as the call matches both functions.