Вопрос
Почему при использовании std::unordered_map
в качестве аргумента функции не удается скомпилировать (и как мне это решить)?
Пример
Эта первая функция имеет std::unordered_map
в качестве параметра функции, но не может скомпилировать
library(Rcpp)
cppFunction(
code = 'void test( std::unordered_map< std::string, std::string > um ) {
}'
, plugins = "cpp11"
)
Принимая во внимание, что это нормально, когда объявлено в теле функции
cppFunction(
code = 'void test( ) {
std::unordered_map< std::string, std::string > um;
}'
, plugins = "cpp11"
)
Extra
Я успешно использовал его в качестве аргумента функции здесь, во встроенной функции в моей spatialwidget
библиотеке
Понимание ответа
Спасибо Ральфу Стубнеру за объяснение. Таким образом, при создании функции Rcpp, вызываемой из R, должно быть эквивалентное представление объектов R.
Этот код не работает, потому что в R
нет эквивалента
unordered_map
// [[Rcpp::export]]
void test( std::unordered_map< std::string, std::string > um ) {
}
Это проходит, потому что он не вызывается / не экспортируется в R
void test( std::unordered_map< std::string, std::string > um ) {
}