<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/152734>152734</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
std::is_invocable_r incorrectly handle non-moveable parameters
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
T-Maxxx
</td>
</tr>
</table>
<pre>
Consider following source code:
```cpp
#include <functional>
#include <iostream>
class foo final {
public:
foo() = default;
foo( const foo &other ) = delete;
foo &operator=( const foo &other ) = delete;
foo( foo &&other ) noexcept = delete;
foo &operator=( foo &&other ) noexcept = delete;
~foo() noexcept = default;
};
using Foo = std::function<void( foo )>;
static_assert( std::is_invocable_v<Foo, foo> ); // <- Comment out to see output + return code 0.
void obviously_invocable( foo f )
{
std::cout << "invoked" << std::endl;
}
int main() {
obviously_invocable( {} );
return 0;
}
```
Compilation with `-std=c++26 -O0 -stdlib=libc++` failed:
```bash
error: static assertion failed due to requirement 'std::is_invocable_v<std::function<void (foo)>, foo>'
15 | static_assert( std::is_invocable_v<Foo, foo> ); // <- Comment out to see output + return code 0.
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
Note 1: [try at godbolt](https://godbolt.org/z/Wee9j9q31)
Note 2: possibly linked with https://github.com/llvm/llvm-project/issues/55346
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEVU1v4zYQ_TXjy8ABTVqSfdDBluNb20uBHgOKHMXcpUktSTlxD_vbC0py3KSbAttLBQOWNB_vzXtDSMZonh1RDcUeisNCDunkQ_378hf5-vq6aL2-1o130WgK2Hlr_Ytxzxj9EBSh8ppA7IDtoGTTT_V9fuTCOGUHTQii6QankvFOWhCP_4gaH1MgeZ5jbKesjBE777EzTlqEag9s1w-tNWpCQ8QcB74BvkUQB9TUycEmEPt3YVTexTT2Al76dKKA9xJLieaKW0ZPQSYfQBx-pvqON-e-S3eeXhX16bO6HwD_dJvvdzk-5P1NF6gO8w3bDTH7eMw44oAx6ays2N2sAtFcvNF3Lttsz1gck0xGPckYKaSc8FZs4pNxF69ka-npAqI5ZlLNqI14nJrsEfgR-DE7v8TGn8_kEvohYfIYifJtPyQEvsdAaQhu3DJkDxPvzAp9ezF-iPZ6x7sx7UaYPOsozRs3lSFANCAaBM5z3VfSwPnt5VsmOW3veo2gxiU8S-NuCzf1_oRFjlaHedrZnnkS9q7v7cgA2zX-3Bsrs_L4YtIJoWTLkdFBAd8D3_MSl78xzC-taUEcrGnnEJQMO2ks6Q9nsZXxBGxHIeTFymJk53ByLkNNVagHyuoH-jaYQKMhwKvPbf1sWxD4ZtzDcVnejAdeTTKsCoSqwf9xgXC8MgkoHr__y_XBn199IlxlDaHYp3BFmfDZ69bbBEU-saeU-piHGLnNoQcfnoEf_wR-_INo-2X7Taym7Rz78dyv9zGa1l7RGveV9OT-h24mnYb2Qfkz8KO1l9vfsg_-C6kE_GhiHCgCPxaFWJcLXQu9FVu5oHpVFeuyXAsuFqe64x1vN3rTsQ1tmZKqFS2xLe9W7VYq3S5MzRkv2IZtVut1wfkDK1XVFV1Zad6tWKVhzegsjX3IBPJ8ixG6XhW8EuuFlS3ZOH5MOHf0gmMUOM_fllCPrNvhOcKaWRNTvLdJJlmqf7wJAY1TPgRSyV7xJJ22hM675dlfKGdgL4M8U6IQF0Ow9X_Xb57jUvO_AgAA__-7_i02">