On Thursday, 29 June 2017 at 19:12:24 UTC, ag0aep6g wrote:
On Thursday, 29 June 2017 at 18:03:39 UTC, Ecstatic Coder wrote:
I often do code like "x < array.length" where x needs to be a long to be able to handle negative values.

I want my code to compile without warning, and therefore I'm against requiring "x < array.length.to!long()" to remove that warning.

`x < array.length` and `x < array.length.to!long` have different results when x is negative. That's why a warning/error is in order.

I can perfectly understand that others may want to check their code in a "strict" mode.

So actually I'm not against a warning for signed/unsigned implicit conversions.

I'm just against putting it on by default, so that the current behavior is kept, because I don't see where is the language improvement in having to put these ugly manual conversion everywhere just because the string/array length was made unsigned.

I always use signed integers for string/array indices because unsigned indices become dangerous as soon as your algorithm starts to decrement it...

And as I said, I compile my D code with the 64-bit compiler, and 2^63 characters/items is much more than needed for my personal use cases.

So until the day I will have a computer which can store a string of 16 million terabytes, at the moment I prefer to use long values for indices, instead of ulong, because negative indices can already occur right now with my current algorithms.

Reply via email to