'default_random_engine'不是标准的成员

Hag*_*dol 4 c++ gcc c++11

我发现了很多关于这个主题的问题,但所有问题似乎与不使用C++ 11进行编译有关.我的代码是

#include <random>
int main(int argc, char *argv[]){
    std::default_random_engine generator;
    return 0;   
}
Run Code Online (Sandbox Code Playgroud)

即使我编译

gcc -std=c++0x testmain.cpp
Run Code Online (Sandbox Code Playgroud)

给出default_random_engine不是std成员的错误.该程序是在远程机器上编译的,我不是自己编写的

gcc -v
Run Code Online (Sandbox Code Playgroud)

产生4.4.7的版本.

有任何想法吗?

Hak*_*hin 7

对于其他人: 检查您是否确实包含 random #include <random>我没有它,之前有其他一些标头包含它。现在标头已更新,我收到此错误,但有一段时间没有找到它,因为我正在检查编译器设置。


oo_*_*uel 5

正如DevSolar已经说过的,你的gcc版本太旧了,无法支持这个C++ 11功能.

它是在gcc-4.5中添加的:

改进了对即将推出的ISO C++标准C++ 0x的实验支持,包括:

支持<future>,<functional><random>.

参考: https ://gcc.gnu.org/gcc-4.5/changes.html

这也反映在libstdc ++ API参考:https: //gcc.gnu.org/onlinedocs/libstdc++/libstdc++-api-4.5/a01118.html

在哪里可以找到以下内容:

 typedef minstd_rand0 default_random_engine
Run Code Online (Sandbox Code Playgroud)

您的代码工作正常,我在:gcc-5.1.0,gcc-4.9.2clang-3.7.0,

另外你应该使用command:g ++而不是gcc,所以默认情况下gcc链接到正确的c ++库.