On 09/17/2014 11:23 PM, Algo wrote:
On Thursday, 18 September 2014 at 06:09:54 UTC, Algo wrote:
void main()
{
      import std.utf;
      decode("dlang", 1);
}

Error: template std.utf.decode cannot deduce function from
argument types !()(string, int), candidates are:
D:\msc\D\dmd2\windows\bin\..\..\src\phobos\std\utf.d(924):
std.utf.decode(S)(auto ref S str, ref size_t index) if
(!isSomeString!S && isRandomAccessRange!S && hasSlicing!S &&
hasLength!S && isSomeChar!(ElementType!S))
D:\msc\D\dmd2\windows\bin\..\..\src\phobos\std\utf.d(942):
std.utf.decode(S)(auto ref S str, ref size_t index) if
(isSomeString!S)

why doesn't "decode(S)(auto ref S str, ref size_t index) if
(isSomeString!S)" correspond?

rvalues cannot be ref it seems

Yes. Interestingly, in D rvalues cannot be bound even to const ref.

void main()
{
    import std.stdio;
    import std.utf;

    size_t index = 1;
    dchar decoded = decode("dlang", index);

    writefln("decoded '%s', next character is at index %s.",
             decoded, index);
}

The output:

decoded 'l', next character is at index 2.

Ali

Reply via email to