4 ms·
There seems to be an error in this proposal: "Change Conversion from signed to unsigned is always well-defined: the result is the unique value of the destinati
by beyondCritics 8y ago
There seems to be an error in this proposal:
"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 2N."
This is no change, since we have that already, e.g. see https://en.cppreference.com/w/cpp/language/implicit_conversion https://en.cppreference.com/w/cpp/language/implicit_conversi... and the conversion operation on the bit pattern is the identity for two's complement representation. The relevant section in the latest C++ standard is:
4.8 Integral conversions [conv.integral]
1 A prvalue of an integer type can be converted to a prvalue of another integer type. ...
2 If the destination type is unsigned, the resulting value is the least unsigned integer congruent to the source
integer (modulo 2 n where n is the number of bits used to represent the unsigned type). [ Note: In a two’s
complement representation, this conversion is conceptual and there is no change in the bit pattern (if there is
no truncation). — end note ]
Therefore the inverse conversion exists and is the identity as well, this is what should be sanctioned.