error: C2780: “unknown-type std::invoke(_Callable &&) noexcept(<expr>)”: 应输入 1 个参数,却提供了 8 个
时间: 2023-12-18 13:04:26 浏览: 231
这个错误通常是因为你在使用 `std::invoke` 的时候传递了错误的参数。`std::invoke` 的第一个参数应该是一个可调用的对象(比如函数指针、成员函数指针、重载函数对象等),后面的参数是用于调用这个可调用对象的参数。请检查你的代码,看看是否有参数传递错误的情况。如果你需要更详细的帮助,请提供更多的代码信息。
相关问题
错误 C2893 未能使函数模板“unknown-type std::invoke(_Callable &&,_Types &&...)”专用化 dahengmfc e:\vs2015\vc\include\thr\xthread 238
这个错误通常是由于使用了错误的语法或参数类型导致的。您可以尝试检查以下几点:
1. 该错误可能是由于未包含正确的头文件而引起的。请确保您包含了所需的头文件。
2. 检查您的函数模板定义是否正确。如果您在定义模板时使用了错误的语法,则可能会导致该错误。
3. 确保您在调用函数模板时使用了正确的参数类型。如果您传递了错误的类型,则可能会导致该错误。
4. 检查您的编译器是否支持 std::invoke 函数。如果不支持,则可能会导致该错误。您可以尝试使用其他函数来替代 std::invoke。
如果您仍然无法解决问题,请提供更多代码以供参考,以便我们更好地了解您的情况。
In file included from /home/yhdr/2-test-2023-06_v3/sent.h:24:0, from /home/yhdr/2-test-2023-06_v3/sent.cpp:1: /usr/include/c++/7/thread: In instantiation of ‘struct std::thread::_Invoker<std::tuple<void (*)(double*, double&, double&, double&, double&, double&), double**, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double> > >’: /usr/include/c++/7/thread:127:22: required from ‘std::thread::thread(_Callable&&, _Args&& ...) [with _Callable = void (&)(double*, double&, double&, double&, double&, double&); _Args = {double**, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>}]’ /home/yhdr/2-test-2023-06_v3/sent.cpp:18:153: required from here /usr/include/c++/7/thread:240:2: error: no matching function for call to ‘std::thread::_Invoker<std::tuple<void (*)(double*, double&, double&, double&, double&, double&), double**, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double> > >::_M_invoke(std::thread::_Invoker<std::tuple<void (*)(double*, double&, double&, double&, double&, double&), double**, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double> > >::_Indices)’ operator()() ^~~~~~~~ /usr/include/c++/7/thread:231:4: note: candidate: template<long unsigned int ..._Ind> decltype (std::__invoke((_S_declval<_Ind>)()...)) std::thread::_Invoker<_Tuple>::_M_invoke(std::_Index_tuple<_Ind ...>) [with long unsigned int ..._Ind = {_Ind ...}; _Tuple = std::tuple<void (*)(double*, double&, double&, double&, double&, double&), double**, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double> >] _M_invoke(_Index_tuple<_Ind...>)
这个编译错误看起来是在创建一个std::thread对象时出现了问题。它指出无法匹配std::thread::_Invoker模板的_M_invoke函数的参数列表。这通常是因为您的函数参数与std::thread的参数不匹配,或者您的函数参数中有无法转换的类型。
请检查您的函数参数类型是否与std::thread需要的参数类型相匹配。如果您的函数需要接受其他参数类型,请尝试将它们转换为std::reference_wrapper或其他可转换的类型。您可能还需要检查您的函数参数数量是否正确。
如果您需要更多的帮助,请提供更多的代码和上下文,我可以更好地帮助您解决这个问题。
阅读全文