I am reading revision 4 of the two's-complement proposal (adopted by C++20), and I have some questions.
In the introduction, it says:
- Status-quo Signed integer arithmetic remains non-commutative in general (though some implementations may guarantee that it is).
Does it really mean "non-commutative", as in a + b
versus b + a
? Or should that read "non-associative"?
It also says:
- Change Conversion from signed to unsigned is always well-defined: the result is the unique value of the destination type that is congruent to the source integer modulo 2^N.
Hasn't signed-to-unsigned conversion been well-defined in precisely this way since the beginning of time? Should that read "conversion from unsigned to signed"?
Is there anything else in the list of changes that is missing or mis-stated?