std :: mt19937 в Rcpp - PullRequest
       80

std :: mt19937 в Rcpp

0 голосов
/ 09 октября 2018

Эта проблема возникла из-за тестирования моего пакета 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' для публичного работника

1 Ответ

0 голосов
/ 09 октября 2018

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

CXX_STD = CXX11

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

...