On Fri, 25 Apr 2014 07:52:42 -0400, Nick Treleaven <[email protected]> wrote:

On 25/04/2014 08:29, Matthias Walter via Digitalmars-d wrote:
     size_t find(T[] Array,T Element)
>     {
find returns a size_t being a nonnegativ number.

>     return -1;
But here it returns -1.

For size_t and uint 'dmd -w' seems to allow returning literal -1, but with ubyte I get:
Error: cannot implicitly convert expression (-1) of type int to ubyte

Is this inconsistent or is there a reason for this?

It is inconsistent, but it's well known legacy based on C rules.

See Integer promotion and arithmetic conversions here: http://dlang.org/type

"Integer values cannot be implicitly converted to another type that cannot represent the integer bit pattern after integral promotion."

-Steve

Reply via email to