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

Reply via email to