Here is the code. It does not compile in vs2013, but does compile in gcc4.8
error C2665: \'std::thread::thread\' : none of the 4 overloads could convert all the argu
You could simply use a lambda rather than monkeying with member function pointers:
auto aaa = thread( [&]{ A.fun(1); } ); aaa.join();