std.utf.decode("dlang", 1)

AsmMan via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Sep 18 07:42:54 PDT 2014


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?

I was having same issue a while ago. But I realized I was using 
function in the wrong way with string type and passing a size_t 
in the 2th argument. You can see use of decode(val, size) in the 
standard library but call it in your code result in an error.

it worked:

string s = readText("file");
decode(cast(ubyte[]) s);

I'm not sure why you're trying to pass a string literal as 
argument because it does need a memory location to change to new 
memory location, where bytes skiped end. That's why it does use 
ref.


More information about the Digitalmars-d-learn mailing list