【c++】thread std::invoke未找到匹配的重载函数

记录一个多线程传参错误
主要报错有:
std::invoke未找到匹配的重载函数
未能使函数模板unknown-type std::invoke…专用化
unknown-type std::invoke…应输入1个参数却提供了10个
在这里插入图片描述
**报错原因:**多线程传入的参数类型有误
修改:如以下代码,func()有三种参数:普通变量a、指针b、引用c,多线程传参时应该分别输入a,&b,std::ref ( c ) ,即主函数中的命令应该为:thread t(func,a,&b,std::ref( c));

void func(int a, int* b, int& c) {
    std::cout << "success" << std::endl;
}
int main()			
{
	int a=0;
	int b=1;
	int c=2;
	thread t(func,a,&b,std::ref(c));	
	t.join();		
	return 0;
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐