私はc++11フラグでg++4.7を使用しています。このデモでは:
#include <iostream>
#include <thread>
class do_work
{
public:
void operator()()
{
std::cout << "Doing work..." << std::endl;
}
};
void foo()
{
}
int main()
{
// Does not work
std::thread t(do_work);
t.join(); // error: request for member ‘join’ in ‘t’, which is of non-class type ‘std::thread(do_work)’
// Works
std::thread t2(foo);
t2.join();
return 0;
}
関数をコンストラクター引数として作成したスレッドでjoin()を正常に呼び出すことはできますが、ファンクターをコンストラクター引数として作成したスレッドでjoin()(エラーインラインを参照)を呼び出すことはできません。誰かがこれを説明できますか?