February 07, 2018
```
void fun_bad3(T)(T a);  // declaration [1]
void fun_bad3(T)(T a){};  // definition [2]
void test(){
  fun_bad3(1);
}
```
Error: test_all.fun_bad3 called with argument types (int) matches both:
main.d(11):     test_all.fun_bad3!int.fun_bad3(int a)
and:
main.d(12):     test_all.fun_bad3!int.fun_bad3(int a)

should [1] be allowed? compler doens't allow defining it afterwards in [2] (unlike function definitions, and, well, modulo this regression https://issues.dlang.org/show_bug.cgi?id=18393)
February 08, 2018
On 2018-02-07 22:39, Timothee Cour wrote:
> ```
> void fun_bad3(T)(T a);  // declaration [1]
> void fun_bad3(T)(T a){};  // definition [2]
> void test(){
>    fun_bad3(1);
> }
> ```
> Error: test_all.fun_bad3 called with argument types (int) matches both:
> main.d(11):     test_all.fun_bad3!int.fun_bad3(int a)
> and:
> main.d(12):     test_all.fun_bad3!int.fun_bad3(int a)
> 
> should [1] be allowed? compler doens't allow defining it afterwards in
> [2] (unlike function definitions, and, well, modulo this regression
> https://issues.dlang.org/show_bug.cgi?id=18393)

Perhaps if it's defined in another file.

-- 
/Jacob Carlborg