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

    <tr>
        <th>Summary</th>
        <td>
            [clang] std::is_invocable fails for __device__ operator()
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            bug,
            clang
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          Pierre-vh
      </td>
    </tr>
</table>

<pre>
    https://godbolt.org/z/WMx5YdYEW

If an `operator()` is marked `__device__ `, `std::is_invocable` fails for that object. This works on nvcc.
I've tried to track this down a bit but I'm unable to. I believe it may have something to do with `declval` but I'm not sure.

Is this a clang issue, or is nvcc incorrect here?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxsUs1u3DwMfBr5QsSQ6fV6ffAhX_YzkEOBHgoEOS30Q9tqZCuQaKfp0xfaBEhS9CKCEMkZckal5KaVqBfNf6I5F2rjOcT-u6MY6WafCx3saz8zPydR3wocBA5TsDp4LkOcBA6_BQ4P3341j_bx_wchz0Levr33I6gVxFGGZ4qKQxR4EtiJowSXYFHxiWz-vlws7c7Q5ZIzgXc5JLYZr7516eLWPRilPeXWUTmfYAwReFYMQf8kwyX8mF2ClxCfEoQV1t2Y8p2FwHYn4OjIAgfgqMwTcC634WUFBdox6I0hVy6wrRkJOJRwD5q8o53AMSzqFWa1E6SwEM9unfI0G-DF8ZwZWzJ-Vz5z_Ji2Boa0RSq_HCa94SswXq0TuJQ2ynuHmC-TyYNbTYiRDMNMkUQ9FLavbVd3qqC-Onanqq6arinm_tSdDHVVTR2ipLa1japIUqvqzh6asS1cjxLrSuJBtlVdVSVWx7Y5jE03droyp1EcJC3K-dL7fcmqFldGfSulPBZeafLp6g9EvU0CUeCdQLySz1lzLmKfe2_0NiVxkN4lTh_T2LG_GuytoznDP9X9JO0nS3w1T7FF_7cbHc-bLk1YBA4Z8z3cPMeQvSFwuK6TBA7Xjf4EAAD__x8L7vk">