std::thread error (thread not member of std)
Solution 1
gcc does not fully support std::thread yet:
http://gcc.gnu.org/projects/cxx0x.html
http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html
Use boost::thread in the meantime.
Edit
Although the following compiled and ran fine for me with gcc 4.4.3:
#include <thread>
#include <iostream>
struct F
{
void operator() () const
{
std::cout<<"Printing from another thread"<<std::endl;
}
};
int main()
{
F f;
std::thread t(f);
t.join();
return 0;
}
Compiled with
g++ -Wall -g -std=c++0x -pthread main.cpp
Output of a.out
:
Printing from another thread
Can you provide the full code? Maybe there's some obscure issue lurking in those ...
s?
Solution 2
Drop -ansi, it means -std=c++98, which you obviously don't want. It also causes macro __STRICT_ANSI__
to be defined and this may change the behavior of the headers, e.g. by disabling C++0x support.
Solution 3
I had the same issue on windows using MinGW. I found wrapper classes for in on github mingw-std-threads Including mingw.mutex.h, mingw.thread.h files to global MinGW directory fixed this issue. All I had to do is to include header file and my code stayed the same
#include "mingw.thread.h"
...
std::thread t(handle);
...
luis
Updated on December 01, 2020Comments
-
luis over 3 years
I compiled & installed gcc4.4 using macports.
When I try to compile using -> g++ -g -Wall -ansi -pthread -std=c++0x main.cpp...:
#include <thread> ... std::thread t(handle); t.join(); ....
The compiler returns:
cserver.cpp: In member function 'int CServer::run()': cserver.cpp:48: error: 'thread' is not a member of 'std' cserver.cpp:48: error: expected ';' before 't' cserver.cpp:49: error: 't' was not declared in this scope
But
std::cout <<...
compiles fine..Can anyone help me?