I must be going blind or something because I cannot see the error here.
sourceCpp(code = '
// [[Rcpp::depends(BH)]]
// [[Rcpp::plugins(cpp11)]]
#include <vector>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
using key_type = boost::geometry::model::d2::point_xy<double>;
using range_type = std::vector<key_type>;
range_type data;
data.reserve(1e6);
for (int i = 0; i != 1e6; ++i)
data.emplace_back(R::runif(), R::runif());
')
I get:
filefc2f3edf6585.cpp:13:1: error: unknown type name 'data'
data.reserve(1e6);
^
filefc2f3edf6585.cpp:13:5: error: cannot use dot operator on a type
data.reserve(1e6);
^
filefc2f3edf6585.cpp:15:1: error: expected unqualified-id
for (int i = 0; i != 1e6; ++i)
^
3 errors generated.
make: *** [filefc2f3edf6585.o] Error 1
Must be something trivial I am not seeing. Anyone else see something I'm
doing wrong?
THK
http://www.keittlab.org/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20180308/f80051ee/attachment.html>
[Rcpp-devel] Strange error
3 messages · Tim Keitt, Dirk Eddelbuettel
Tim,
Three distinct errors:
- no wrapping function, so sourceCpp() was the wrong paradigm
- no inclusion of Rcpp.h so types unknown (agem)
- wrong calling convention for runif(), cannot be empty.
The following compiles, it may still be nonsensical.
Dirk
// [[Rcpp::depends(BH)]]
// [[Rcpp::plugins(cpp11)]]
#include <Rcpp.h>
#include <vector>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
using key_type = boost::geometry::model::d2::point_xy<double>;
using range_type = std::vector<key_type>;
// [[Rcpp::export]]
void foo() {
range_type data;
data.reserve(1e6);
for (int i = 0; i != 1e6; ++i)
data.emplace_back(R::runif(0,1), R::runif(0,1));
}
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
Ha. That's simultaneously kinda funny and kinda painful. It was embedded into an Rmd Rcpp chunk and I forgot the C++ entry point... sigh. THK http://www.keittlab.org/
On Thu, Mar 8, 2018 at 12:20 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
Tim,
Three distinct errors:
- no wrapping function, so sourceCpp() was the wrong paradigm
- no inclusion of Rcpp.h so types unknown (agem)
- wrong calling convention for runif(), cannot be empty.
The following compiles, it may still be nonsensical.
Dirk
// [[Rcpp::depends(BH)]]
// [[Rcpp::plugins(cpp11)]]
#include <Rcpp.h>
#include <vector>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
using key_type = boost::geometry::model::d2::point_xy<double>;
using range_type = std::vector<key_type>;
// [[Rcpp::export]]
void foo() {
range_type data;
data.reserve(1e6);
for (int i = 0; i != 1e6; ++i)
data.emplace_back(R::runif(0,1), R::runif(0,1));
}
--
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20180308/cfd50e99/attachment.html>