<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/62396>62396</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            <type_traits> use of `__is_convertible` identifier incompatible with GCC 13
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc++
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
            frobtech
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          frobtech
      </td>
    </tr>
</table>

<pre>
    In GCC 13, `__is_convertible` is a built-in, but `__is_convertible_to` is not.
libc++ uses `__is_convertible_to` when available, but its fallback implementation without the built-in declares a `struct __is_convertible` as part of its implementation. This makes GCC 13's parser get quite unhappy since it thinks `__is_convertible` can only be the built-in and not a struct tag, apparently.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8Us1u2zAMfhr5QjSQacdJDj606TLsvntAy0zMVZY8iW6Rtx8ceC0KdDsZsEh-v5SzXANza7ZPBvGSYqfsBoNots8FzTrE1P79W3Sxv7U_Anw_HqGsDB7BNPZ8lnx2MbxyUuk8m8aCZCDoZvH6IGGZ62b9avascR0PUTfGPhv76KVzBp8MPsGcOf9n7W3gAPRK4mnBXWFEM1zI-47cC8g4eR45KKnEAG-iQ5wVdOB3etCz85R4oWwamzXNTuErVZRhoqQQL3eQz7c38HOQDCO9cH43aHffyJzgygq_Z1GGOQw0TTfIEhyDLGQkvHypcwF1FCAGf4OOP9Om0C-uAcFKWem6eEDTRImD-ttqaNG3VX-oDlRwWzZ73G7r_Q6Loe33PZYlO-7qw8HixVVbdpe6L5tDaRsqC2nRYmVr3FmLZYkb7Gt0vOv7HTlu9mRqyyOJ33j_Om5iuhaS88xtg9WhKTx17PNarY9Y13Kldll66OZrNrX1kjV_nFFRz62pjnqb-KyJRLOpvi2NWOz_V-16DioX4QQSXBwnuj_dY18zKebk20F1yqZ6NHgyeLqKDnO3cXE0eFoYrJ-HKcVf7NTg6a4qGzzdhf0JAAD__5lGEVc">