On 06/24/2016 08:11 PM, Walter Bright wrote:
On 6/24/2016 4:59 PM, Andrei Alexandrescu wrote:
On 06/24/2016 07:56 PM, Walter Bright wrote:
I believe adding such behavior is beyond the charter of checkedint.

Which checkedint? The one in core? -- Andrei

Your Checked!int. Sorry for the confusion.

Though you should be able to implement that via a hook, I think at this point we need to agree to disagree. The relevant code is at https://gist.github.com/andralex/a0c0ad32704e6ba66e458ac48add4a99#file-checked-d-L88:

    static if (!isUnsigned!L)
    {
        if (lhs < 0)
        {
            return subu(Result(rhs), Result(negs(lhs, overflow)),
                overflow);
        }
    }

With your suggestion, this would also be an overflow:

long x = -1;
auto y = array.length + x;

I would be hard pressed to acknowledge that as an overflow that needs to be dynamically signaled. And the beauty of two's complement is that indeed it just works.


Andrei

Reply via email to