Hi,

I have a function:

string strippedString(ubyte[] block) {
        return (cast(string)block).stripRight("\0");
}

With dmd it compiles, with ldc it produces the following error message:

Error: template std.string.stripRight cannot deduce function from argument types !()(string, string), candidates are: /usr/lib/ldc/x86_64-linux-gnu/include/d/std/string.d(2902,6): std.string.stripRight(Range)(Range str) if (isSomeString!Range || isRandomAccessRange!Range && hasLength!Range && hasSlicing!Range && !isConvertibleToString!Range && isSomeChar!(ElementEncodingType!Range)) /usr/lib/ldc/x86_64-linux-gnu/include/d/std/string.d(3015,6): std.string.stripRight(Range)(auto ref Range str) if (isConvertibleToString!Range)
ldmd2 failed with exit code 1.

Why?

The modified function does not even compile with either compiler:

string strippedString(ubyte[] block) {
        return cast(string)( block.stripRight(0) );
}

How can I make the function more specific, so that the compiler knows, which option to take?

Kind regards,
Sisor

Reply via email to