【发布时间】:2015-04-06 18:28:42
【问题描述】:
这里是代码。它在vs2013中不编译,但在gcc4.8中编译
error C2665: 'std::thread::thread' : 4 个重载都不能转换所有参数类型
由于我使用的是 vs2013,任何人都可以提供解决方法吗?
#include <iostream>
#include <thread>
template<typename T>
class TestClass
{
public:
TestClass(){};
~TestClass(){};
T t;
template<typename U>
void fun(U u)
{
std::cout << "fun: " << u << '\n';
}
};
int main()
{
TestClass<double> A;
auto aaa = std::thread(&TestClass<double>::fun<int>, &A, 1);
}
【问题讨论】:
-
在线程结束前不调用
join()或detach()是未定义的行为 -
你应该打电话给
join()。 -
@KoushikShetty,实际上,不调用
join()或detach()并不是未定义的行为。它导致调用terminate()。 (这比未定义的行为要好,因为你总是会遇到进程崩溃,所以你可以去修复它。)
标签: c++ multithreading c++11