//thread construction function does not support function overloading
//it is so unfriendly
#include <thread>
#include <iostream>
class A
{
public:
void fun(){}
void fun(int,int,int,int){}
};
void g_fun(){}
void g_fun(int,int,int,int){}
int main()
{
std::thread t1(&A::fun,new A(),0,0,0,0);//error
std::thread t2(g_fun,0,0,0,0);//error
return 0;
}