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

    <tr>
        <th>Summary</th>
        <td>
            [libc++] The call operator of std::mem_fn(pm) isn't SFINAE-friendly and doesn't propagate noexcept
        </td>
    </tr>

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

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

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

<pre>
    According to https://eel.is/c++draft/func.memfn and https://eel.is/c++draft/func.require#5, `std::mem_fn(pm)(args...)` should be _expression-equivalent_ to `std::invoke(pm, args...)`, which implies that it should be constrained in the same way and be `noexcept` in the same way. But it isn't. E.g. https://godbolt.org/z/qf6PccY3n and https://godbolt.org/z/fjMqKfeex.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUUsFu3CAQ_Rp8QYvYsY13Dz7sJrFUVa0qtZeeIgxjmxSDA3iT9Osrths13baHnhAw783Me0_GaEaH2JL6SOrbQq5p8qFdtJn9qei9fmkPSvmgjRtp8nRKaYmkPBDoCHSIlplIoFMEjgSOOsghEeiG1Sk24zw4Kp3-H1DAx9UEJFDWBG4oETwmnaHlYcb5fnAEdstMYE9gJ8MYGWP5IjiNk1-tpj3Se3xeAsZovNtkupO06NJ9Hv8tn3En_w0vfDf0N7b88DQZNVEzL9ZgpGmSiZr0po3yLqYgjUNNjaNpQhrljPRJvpy37jG3cx6fFS4pj3hVxehxPXOa6Ag0idE7NrIrtUave28T82Ek0H0n0D0O4pNSX8u_aftn9fDw4fH9gPjMCt2Wel_uZYHtttnyfbMTDRRTi1yCaCRw1NVW8Kqpha6k0lsU-0oMujAtcKh4CRzKersFpmoBO5BSi6oSddmQiuMsjWXWnubcvDAxrtjuBK_KwsoebTwnDMCa_uI7AciJC20Gbfp1jKTi1sQUf9Ekk-w5m29g9S39MiFV0lrqFwwy-UD9QP8RlFd16efu3cfD3WYIBp22Pz3SHi-_S_CLHGVC-upYsQbbXslr0rT2TPmZQJeHvBybJfgHVDnF58Vzus-7_wgAAP__GwURLg">