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

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