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

    <tr>
        <th>Summary</th>
        <td>
            [libc++] Clean up instances of `_LIBCPP_COMPRESSED_PAIR` and `_LIBCPP_COMPRESSED_TRIPLE` in type erased wrappers
        </td>
    </tr>

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

    <tr>
      <th>Assignees</th>
      <td>
            philnik777
      </td>
    </tr>

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

<pre>
    We believe that we can change the layout of type erased wrappers without breaking their ABI, since we'd be introducing a new vtable. That would allow cleaning up lots of complexity in `shared_ptr` and `packaged_task` for example.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxskU9r4zAQxT-NfBkaFNnyn4MPTdpAoMuGtrDHMJamtjaKZCQ5ab79olDYHgoCwdN7muH3MEYzOqKeyQ0TYp6MdebUNA0TgsmnApc0-dBbbbxzVAxe3_o_BANZQxeCNGGCK4FCB2pCN2aJwOLNLwn8B6TbTEABI2m4BpxnChGuJk35fQiEJ-PGnDEBHjd7JrYQjVMEV2Ki0TAQGJeC14vKRgRHV7gkHCyt4P0-3S9WA1rrr6Asocu-ZQbrU8wbKH-eLX2adAPjgNU8ThhIH-cUWM0Bnc7ijOqEI-ljwnjK-ocPQJ-Ys6tC96Xuyg4L6teNlE3blV1dTD1Wg6hQtbKispXthyJOrdQdH0RblWsqTC-4kLwV67Vc12W9ki2vRcmbriIqW96xitMZjV1ZezmvfBgLE-NC_VpWTVsWFgey8ascawbFxOZ-7uWEPqcehmWMrOLWxBT__5NMsvdav8XkE2wzoszHuJjQKbpDYjU_vuw328PhuP396_D6_Pb2_HQ8PO5fvzH6wfH-uj-8PGePcT92XSzB9lNKc2TlIxM7JnajSdMyrJQ_M7HL635dD3Pwf0klJnZ3BpGJ3ReGSy_-BQAA__9PV9w3">