“std::invoke”: 未找到匹配的重载函数 fit3points c:\microsoft visual studio\2017\community\vc\tools\msvc\14.16.27023\include\thr\xthread 238
时间: 2023-08-27 09:17:34 浏览: 91
这个错误是发生在调用`std::invoke`函数时,编译器无法找到匹配的重载函数。`std::invoke`是C++17引入的函数模板,用于统一地调用可调用对象(如函数指针、成员函数指针、函数对象等)。要解决这个问题,你可以检查调用`std::invoke`的代码,确保传递给它的参数类型正确,并且匹配可调用对象的要求。另外,还要确保你的编译器支持C++17标准。如果不支持,可以尝试升级编译器或者使用其他方式来实现你的需求。
相关问题
C++库的thread提示std::invoke未找到匹配的重载函数怎么办
这个错误提示通常是因为 `std::invoke` 函数需要你传入可调用的对象,但是你传入的对象类型不正确,导致编译器无法找到匹配的重载函数。解决方法是确保传入的对象类型正确,并且符合 `std::invoke` 的要求。
下面是一个示例代码:
```c++
#include <iostream>
#include <thread>
#include <functional>
void foo(int n) {
std::cout << "foo: " << n << std::endl;
}
int main() {
int n = 42;
std::thread t(std::invoke<void>(&foo, n)); // 传入可调用对象
t.join();
return 0;
}
```
在上面的代码中,我们通过 `std::invoke` 函数将 `foo` 函数转换为可调用对象,并将其传入 `std::thread` 构造函数中。注意,我们需要显式指定模板参数 `<void>`,以确保编译器正确地推断函数返回值类型。
如果你仍然遇到错误提示,可以检查你传入的对象类型是否正确,并且符合 `std::invoke` 的要求。例如,你需要确保传入的对象是可调用的,并且参数类型和数量与函数参数列表匹配。
std::invoke
std::invoke是一个通用的函数调用工具,可以用于调用函数、成员函数和函数对象。它可以用于替代函数指针、成员函数指针和std::mem_fn等。在使用std::invoke时,它会根据传入参数的类型自动选择最合适的调用方式,从而让代码更加简洁。
如果传入的是一个函数指针或成员函数指针,std::invoke会直接调用该指针指向的函数或成员函数;如果传入的是一个可调用对象(如lambda表达式),std::invoke会调用该对象的operator()函数。
另外,std::invoke支持绑定参数(使用std::bind或者类似bind的库),从而可以在调用时指定部分参数。这对于某些需要动态生成参数的场景非常有用。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)