std::mt19937 в Rcpp

Эта проблема возникла из-за тестирования моего пакета R (RcppParallel) в Windows через win-builder-r, так как для моего 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.

Минимальный пример можно найти в этом предыдущем посте, используйте последний: вызов функции 'mypackage' в public.

1 ответ

Решение

<random> заголовок в целом и std::mt19337 в частности, доступны только с C++11 и выше. И если вы хотите использовать C++11 в Windows в контексте пакета R, вы должны добавить

CXX_STD = CXX11

в src/Makevars.win (Источник: написание R расширений). На других платформах часто обходятся без этого, так как там используются новые компиляторы, которые по умолчанию используют C++11.

Другие вопросы по тегам