Probably defect in wording of C++ working draft (integer conversion rank rules)

I have found a possible contradiction in
the working draft of standard C++.
First I present the facts, and my question comes at the end.

In the page 74, when the integer conversion ranks are stablished,
in 6.8.4. line (1.1) says

"No two signed integer types [...] shall have the same integer conversion rank, even if they have the same representation".

In 6.8.1. line 8 (page 71) says:

"Type wchar_t is a distinct type that has an implementation-defined signed or unsigned integer type as its underlying type".

Finally, in 6.8.4. line (1.8) says:

"The ranks of char8_t, char16_t, char32_t, and wchar_t shall equal the ranks of their underlying types (6.8.1)."

In case that wchar_t be implemented as a signed integer type,
it would have the same rank as its underlying type,
which is a distinct type of some other integer type.

Thus, we have two different signed integer types with identical rank,
in contradiction with 6.8.1. (1.1).

Is this an actual contradiction,
or I am misunderstanding when two trivially copyable types are distinct types in C++?



Read more here: https://stackoverflow.com/questions/66431703/probably-defect-in-wording-of-c-working-draft-integer-conversion-rank-rules

Content Attribution

This content was originally published by pablo1977 at Recent Questions - Stack Overflow, and is syndicated here via their RSS feed. You can read the original post over there.

%d bloggers like this: