Hi, 

That’s because VTYPE::value_type is traits::r_vector_proxy<RTYPE>::type, i.e. 

template <int RTYPE>
struct r_vector_proxy{
        typedef typename storage_type<RTYPE>::type& type ;
} ;
        
so VTYPE::value_type is int& 

You can either use stored_type, i.e. 

std::for_each( v.begin(), v.end(),[]( const VTYPE::stored_type& ) ...


Or do a little dance with the reference qualifier: 

std::for_each( v.begin(), v.end(),[]( const 
std::remove_reference<VTYPE::value_type&>::type& __n )  ...

Both of which are not very satisfying. 


FWIW, in Rcpp11/Rcpp14, VTYPE::value_type is defined like this: 

typedef typename traits::storage_type<RTYPE>::type value_type ;
        
so IntegerVector::value_type is int, and therefore you get what you rightfully 
expect. 


Romain


> Le 31 mars 2015 à 00:19, Kevin Thornton <krtho...@uci.edu> a écrit :
> 
> Hi,
> 
> I've come across an issue when compiling some code with Rcpp >= 0.11.4 (using 
> R 3.1.3 with either gcc or clang on Linux, or clang on OS X).
> 
> The code that reproduces the issue is here: 
> https://gist.github.com/molpopgen/b3bda09590172044ff84
> 
> Specifically, the last function is where I'm running into trouble.  I also 
> tried the same ideas using C++98 (function objects instead of lambda 
> expressions), and got the same results.
> 
> The short version is that Rcpp::IntegerVector::value_type appears to lose 
> some info about value_type's const-ness when a const IntegerVector is passed 
> to an Rcpp function.  I went back an tried older version of Rcpp and verified 
> that the code from the above link compiles with version from 0.11.0 through 
> 0.11.3.  Starting with 0.11.4, the last function in that piece of code will 
> no longer compile, and appears to think that a non-const int & is the type 
> that it is looking for.
> 
> I tried the other STL-like typedefs that one may expect ( reference, 
> const_reference ), and they do not exist for Rcpp vector types.
> 
> Any thoughts?  Is this intended?  Should I not write functions taking const 
> references to Rcpp types?
> 
> Best,
> 
> Kevin
> 
> ___________________________
> Kevin Thornton
> Associate Professor
> Ecology and Evolutionary Biology
> University of California, Irvine
> http://www.molpopgen.org
> http://github.com/molpopgen
> http://github.com/ThorntonLab
> 
> 
> 
> 
> 
> 
> _______________________________________________
> 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

_______________________________________________
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

Reply via email to