title: Probably defect in wording of C++ working draft (integer conversion rank rules)
body: <p>I have found a possible contradiction in the <a href="https://eel.is/c++draft/" rel="nofollow noreferrer">working draft of standard C++</a>.  First I present the facts, and my question comes at the end.</p>
  <p>When the <em><strong>integer conversion ranks</strong></em> are established, <a href="http://eel.is/c++draft/basic.types#conv.rank-1.1" rel="nofollow noreferrer">[conv.rank]/1.1</a> says</p>
  <blockquote>
  <p>No two signed integer types [...] shall have the same integer
  conversion rank, even if they have the same representation.</p>
  </blockquote>
  <p><a href="http://eel.is/c++draft/basic.types#basic.fundamental-8" rel="nofollow noreferrer">[basic.fundamental]/8</a> says:</p>
  <blockquote>
  <p>Type <code>wchar_t</code> is a distinct type that has an implementation-defined
  signed or unsigned integer type as its underlying type.</p>
  </blockquote>
  <p>Finally, <a href="http://eel.is/c++draft/basic.types#conv.rank-1.8" rel="nofollow noreferrer">[conv.rank]/1.8</a>:</p>
  <blockquote>
  <p>The ranks of <code>char8_t</code>, <code>char16_t</code>, <code>char32_t</code>, and <code>wchar_t</code> shall equal the
  ranks of their underlying types ([basic.fundamental]).</p>
  </blockquote>
  <p>In case that <code>wchar_t</code> be implemented as a <em><strong>signed integer type</strong></em>, it would have the same rank as its underlying type, which is a distinct type of some other integer type.</p>
  <p>Thus, we have two different signed integer types with identical rank, in contradiction with [conv.rank]/1.1.</p>
  <p>Is this an actual contradiction, or I am misunderstanding when two trivially copyable types are distinct types in C++?</p>