std::mt19937 在 Rcpp 中
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: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
可以从前面的post中找到一个最小的例子,使用最后一个:
一般的 <random>
header 和特别的 std::mt19337
仅适用于 C++11 及更高版本。如果你想在 R 包的上下文中在 Windows 上使用 C++11,你应该添加
CXX_STD = CXX11
到 src/Makevars.win
(来源:Writing R Extensions)。在其他平台上,通常没有这个,因为使用默认使用 C++11 的更新编译器。但是,请注意 WRE 不鼓励使用 C++11 中的 random
,可能是因为分布函数是实现定义的。
这个问题是通过 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 This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
可以从前面的post中找到一个最小的例子,使用最后一个:
一般的 <random>
header 和特别的 std::mt19337
仅适用于 C++11 及更高版本。如果你想在 R 包的上下文中在 Windows 上使用 C++11,你应该添加
CXX_STD = CXX11
到 src/Makevars.win
(来源:Writing R Extensions)。在其他平台上,通常没有这个,因为使用默认使用 C++11 的更新编译器。但是,请注意 WRE 不鼓励使用 C++11 中的 random
,可能是因为分布函数是实现定义的。