std::mt19937 in Rcpp



这个问题是由于通过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 此文件需要编译器和库支持 ISO C++ 2011 标准。此支持目前处于实验阶段,必须使用 -std=c++11 或 -std=gnu++11 编译器选项启用。

从这篇较早的帖子中可以找到一个最小的例子,使用最后一个:在公共工作人员中调用"mypackage"函数

一般的<random>标头,特别是std::mt19337标头仅适用于 C++11 及更高版本。如果要在 R 包的上下文中使用 Windows 上的 C++11,则应添加

CXX_STD = CXX11

src/Makevars.win(来源:编写 R 扩展(。在其他平台上,人们通常没有这个,因为使用默认使用 C++11 的更新编译器。但是,请注意,WRE 不鼓励使用 C++11 中的random,可能是因为分发函数是实现定义的。

最新更新