Not a bug, this is expected behaviour. 

If you pass a matrix of ints to the NumericVector ctor, Rcpp has no choice but 
to coerce the data to a matrix of double, which means new data, hence the 
original data does not get modified. 

If you pass a matrix of double, no copy is required, therefore Rcpp operates 
directly on the data. 

Those are features. 



Le 4 nov. 2011 à 08:01, Darren Cook <dar...@dcook.org> a écrit :

>> I.e. the point of his code was to show that a matrix of doubles gets
>> modified, a matrix of ints does not.
> 
> Or change the first line from NumericMatrix to:
>   Rcpp::IntegerMatrix r_m(mem);
> 
> Then the behaviour is reversed. The matrix of doubles does not get
> modified, but the matrix of ints does!
> 
> Dirk, Romain, this is a bug-in-waiting. Is there any way to generate a
> warning when the implicit deep copy happens? Or alternatively when the
> pointer is being used implicitly... but my hunch is that I want to know
> when there is any implicit conversion between int and double: modern C++
> style is to explicitly declare all type conversions with static_cast<>
> and friends.
> 
> Darren
> _______________________________________________
> 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