error: 'std::this_thread' has not been declared

OlegG picture OlegG · Dec 6, 2012 · Viewed 23.4k times · Source

I try to use std::this_thread::sleep_for() function but got the error
error: 'std::this_thread' has not been declared.
The flag _GLIBCXX_USE_NANOSLEEP included.
What else is needed to force it to work?
MinGW ==> gcc version 4.7.2 (GCC)

SSCCE:

#include<thread>

int main() {
  std::this_thread::sleep_for(std::chrono::seconds(3));
}

command line:

g++ -D_GLIBCXX_USE_NANOSLEEP -std=gnu++0x ssce.cpp -o ssce.exe

result of compilation:

ssce.cpp: In function 'int main()':
ssce.cpp:4:8: error: 'std::this_thread' has not been declared

Answer

Anatoly Kalin picture Anatoly Kalin · Dec 9, 2012

Use MinGW with POSIX threads, Luke.

http://sourceforge.net/projects/mingwbuilds/