On 11 April 2018 at 23:54, Cris Luengo wrote: | > The way R thinks about this is that _it_ owns everything, and Rcpp makes | > getting things back and forth _using the R memory system and its lifetime / | > reference count control_ fairly easy. | | Yes, that makes sense. But somehow it is not easy to transfer ownership | of an object to R. There needs to be a new object created that it can own?
Yes, in general that works just fine. Ie when we do Rcpp::NumericVector x(10); we use the R malloc functions, and to R this _is_ the same as a REAL with 10 elements. Because everything has to be a SEXP, our C++ objects are really proxies to underlying SEXPs. And R is happy. And controls everything and it all works as if you used the C API of R. Which we extend (by a lot, you could say) to make things easier. A unique_ptr with _control on the C++ side_ does not fit that mold at all so we have to do something different here. The singleton / static instance is one approach _so that it survives across multiple (different) calls_ from R. I am sure there are other approaches, but they still have to match the basic constraint of 'SEXP in, SEXP out'. Hth, Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel