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: nob...@puremagic.com
          Reporter: mathias.l...@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)
```

--

Reply via email to