g ++和c ++ 0x规范支持

sep*_*oad 12 c++ gcc g++ c++11

虽然据说g ++中对c ++ 0x新功能的支持处于实验模式,但许多gcc开发人员声称可以使用代码中的大多数新功能并使程序正常工作.

但是当我尝试编译这个简单的程序时,会导致分段错误.为什么?

#include <thread>
#include <iostream>

void my_thread_func()
{
    std::cout<<"hello"<<std::endl;
}

int main()
{
    std::thread t(my_thread_func);
    t.join();
}
Run Code Online (Sandbox Code Playgroud)

g ++ -std = c ++ 0x -Wall -o run main.cc

Sum*_*ant 12

我将可执行文件与pthread库链接起来并且有效!我没有看到任何遗漏的共享库依赖项(ldd),但似乎Linux上的std C++库实现在内部使用pthread.

g++ thread.cpp -o thread -Wall -std=c++0x -lpthread
Run Code Online (Sandbox Code Playgroud)