Rcpp中的std :: mt19937

时间:2018-10-09 07:07:45

标签: c++ std rcpp rcppparallel

此问题源于通过win-builder-r在Windows上测试我的R(RcppParallel)软件包,至于我的mac电脑没有问题。

"error: 'mt19937' is not a member of 'std'"

此外,此错误首先出现:

  

D:/Compiler/gcc-4.9.3/mingw_32/i686-w64-mingw32/include/c ++ / bits / c ++ 0x_warning.h:32:2:error:#error此文件需要编译器和库支持适用于ISO C ++ 2011标准。该支持目前处于试验阶段,必须使用-std = c ++ 11或-std = gnu ++ 11编译器选项启用。

可以从此较早的帖子中找到一个最小的示例,使用最后一个:Calling 'mypackage' function within public worker

1 个答案:

答案 0 :(得分:3)

通常<random>标题,尤其是std::mt19337标题仅在C ++ 11及更高版本中可用。而且,如果您想在Windows的R包环境中使用C ++ 11,则应该添加

CXX_STD = CXX11

src/Makevars.win(来源:Writing R Extensions)。在其他平台上,经常会遇到这种情况,因为默认情况下会使用较新的编译器,这些编译器使用C ++ 11。但是,请注意,WRE不鼓励使用C ++ 11中的random,这可能是因为分发功能是由实现定义的。