
On 08/02/2019 21.53, Vanessa McHale wrote:
Wouldn't both versions throw an exception in that case? Am I missing something?
Not necessarily, the classic example would be the Binary Search bug https://thebittheories.com/the-curious-case-of-binary-search-the-famous-bug-... (it could be argued that you really want a *trap* in this case as it would surface the bug, but I'm just confirming that there *can* be different behavior.) Generally: I think it's fine to expect WordNN to do wrap-around arithmetic (and it does form a proper ring), but IntNN is kind of weird because there is that edge case[1] of minBound (as Carter mentioned ITT). IME, usually Word-like types are used for things like crypto, etc. -- not just when you want to enforce "not negative", but that may just be my little bubble. [1] In two's complement which even C++20 is set to mandate!