[Issue 16885] New: Cannot deduce function from argument type when mixing template instantiation and implicit convertion
    via Digitalmars-d-bugs 
    digitalmars-d-bugs at puremagic.com
       
    Thu Dec  1 04:50:46 PST 2016
    
    
  
https://issues.dlang.org/show_bug.cgi?id=16885
          Issue ID: 16885
           Summary: Cannot deduce function from argument type when mixing
                    template instantiation and implicit convertion
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: mathias.lang at sociomantic.com
Sorry for the very generic title, didn't knew how to put it.
This snippet should compile:
```
T[] tail (T) (T[] v, in T[] i, out T[] o)
{
    return v;
}
void main ()
{
    const(char)[] p1, p2;
    immutable(char)[] pi;
    tail(p1, pi, p2);
}
```
As there is one possible instantiation for tail, which is `T=const(char)`.
But here the compiler fails to see it and spit out:
```
lol.d(11): Error: template lol.tail cannot deduce function from argument types
!()(const(char)[], string, const(char)[]), candidates are:
lol.d(1):        lol.tail(T)(T[] v, in T[] i, out T[] o)
```
--
    
    
More information about the Digitalmars-d-bugs
mailing list