R cpp функция не может принимать std :: set <int>? - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь создать функцию C ++ через R cpp, которая принимает std:set<int> в качестве аргумента. Моя цель - добавить / вставить его в список std :: list. Возможно, я упускаю что-то простое, но R cpp, кажется, задыхается, когда я пытаюсь использовать аргумент std::set<int>.

Рассмотрим следующий воспроизводимый пример:


    library(Rcpp)
    src1 = '
    #include <Rcpp.h>
    using namespace Rcpp;
    // [[Rcpp::export]]
    List list_set() {
      std::list<std::set<int>> lz;
      std::set<int> tset = {10, 20, 30, 40, 50};
      lz.push_back(tset);
      return wrap(lz);
    }
    '
    sourceCpp(code = src1)
    list_set()

    src2 = '
    // [[Rcpp::export]]
    List list_set2(std::set<int> tset) {
      std::list<std::set<int>> lz;
      lz.push_back(tset);
      return wrap(lz);
    }
    '
    sourceCpp(code = src2)

Вывод первой функции - ожидаемая:

    > list_set()
    [[1]]
    [1] 10 20 30 40 50

Вторая функция выдает следующую ошибку при попытке компиляции:

    file6e04cf82f25.cpp:3:1: error: 'List' does not name a type 
    List list_set2(std::set<int> tset)

Примечание: замена List на std::list<std::set<int>> также выдает ошибку (думал, что это что-то другое).

Есть ли какое-то простое исправление, о котором я пишу?

...