[Issue 8373] IFTI fails on overloading of function vs non function template
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Tue Apr 15 22:09:02 PDT 2014
    
    
  
https://issues.dlang.org/show_bug.cgi?id=8373
Kenji Hara <k.hara.pg at gmail.com> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |accepts-invalid, pull
--- Comment #3 from Kenji Hara <k.hara.pg at gmail.com> ---
(In reply to timon.gehr from comment #0)
> DMD 2.059:
> auto fun(T...)(T args){return 1;}
> template fun(a...){auto fun(T...)(T args){return 2;}}
> static assert(fun(0)==1); // error
> 
> The call matches only the first declaration, therefore the overload
> resolution
> should succeed.
https://github.com/D-Programming-Language/dmd/pull/3459
This is order-dependent bug. If you swap the positions of two 'fun's,
template fun(a...){auto fun(T...)(T args){return 2;}}
auto fun(T...)(T args){return 1;}
static assert(fun(0)==1); // error
It will cause correct error for ambiguity.
test.d(3): Error: test.fun called with argument types (int) matches both:
test.d(1):     test.fun!().fun!(int).fun(int)
and:
test.d(2):     test.fun!(int).fun(int)
--
    
    
More information about the Digitalmars-d-bugs
mailing list