On Wed, Mar 24, 2010 at 2:47 PM, Dirk Eddelbuettel <[email protected]> wrote: > > On 24 March 2010 at 13:31, Douglas Bates wrote: > | I find myself writing code like > | > | Rcpp::NumericVector mu(arg); > | Rcpp::NumericVector eta(mu.size()); > | ... > | > | because I need to ensure that mu is constructed from the argument SEXP > | before its size can be used to construct eta. Is the order of > | initializations compiler-dependent or defined by the standard? If > | defined by the standard I could write > | > | Rcpp::NumericVector mu(arg), eta(mu.size()); > | > | and expect it to work as intended. Does anyone know if I can count on > | left-to-right ordering of initializations? > > Interesting question, and I can't offer more than a firm 'not sure'. You > could for now put some of our conditional logging in the constructor as some > other classes (that take a string as well and then print that string, say) so > that you could at least test with the compiler you happen to using today. > > Strictly personally speaking I quite like > > Rcpp::NumericVector mu(arg); > Rcpp::NumericVector eta(mu.size()); > > as it gives me ample space to the right comment.
Agreed. However I have been trained by Martin Maechler never to use cut-and-paste when programming (Knuth's "root of all evil" is premature optimization and Martin's is cut-and-paste) so I feel like a sinner every time I duplicate a line then change the identifier. _______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
