Пакет с Rcpp игнорирует #include C++

Программы на C++. Форум разработчиков
Anonymous
Пакет с Rcpp игнорирует #include

Сообщение Anonymous »

Я хочу использовать std::stack в функции C++ внутри пакета R. Рассмотрим следующий пример файла C++:

Код: Выделить всё

// [[Rcpp::plugins(cpp20)]]
#include 
#include 

// [[Rcpp::export]]
Rcpp::XPtr stack_c(Rcpp::IntegerVector& v) {
std::stack* s = new std::stack;
s->push(v[0]);
Rcpp::XPtr p(s);
return p;
}
Компиляция вне пакета R с помощью Rcpp::sourceCpp() работает. Однако он не работает внутри пакета R.
Пакет R содержит упомянутый файл C++ и файл Makevars со строкой CXX_STD = CXX20 в каталоге src.< /p>
Файл R в каталоге R вызывает функцию.

Код: Выделить всё

#' @export
stack_r = 1.0.13)
LinkingTo: Rcpp
При попытке установить пакет я получаю следующую ошибку компилятора:

Код: Выделить всё

RcppExports.cpp:14:18: error: 'stack' is not a member of 'std'
14 | Rcpp::XPtr< std::stack > create_stack(Rcpp::IntegerVector& v);
|                  ^~~~~
RcppExports.cpp:5:1: note: 'std::stack' is defined in header ''; did you forget to '#include '?
Я не знаю, почему это происходит. Файл C++ явно содержит строку #include .
Нужно ли мне устанавливать другие флаги компилятора?
Я использую Windows 11 с последними версиями Rtools, R и Rcpp.

Подробнее здесь: https://stackoverflow.com/questions/791 ... lude-stack

Вернуться в «C++»