3d vector struct
Stanislav Blinov
stanislav.blinov at gmail.com
Mon Feb 3 14:01:14 PST 2014
On Monday, 3 February 2014 at 20:10:59 UTC, Brenton wrote:
> 4) Is it advisable for the cross method to return by value? In
> C++, I would declare this method as inline and in a header
> file. Can I trust D to inline away this inefficiency? Perhaps
> I should pass in the result as a "ref" or "out" parameter
> (although I don't require the vector to be initialized here)?
> Is there a more efficient way to do this?
Seeing as previous responses skipped over this point:
Yes, return by value. The compiler will optimize that for you by
moving (not copying) the result. Return-by-value (and
optimizations involved) is one of the stronger things in D that
IIRC was there even before e.g. C++11 with its move semantics.
Performing a move means that it is absolutely possible for clever
compiler to even construct the value in-place, but I'm not sure
if any of existing D compilers do that as of yet.
Return-by-value being optimized as a move might be one more
reason why you would like to use slices instead of variables to
store coordinates (since that would mean just moving a pointer
and a size_t), but that might have to wait until custom
allocators finally arrive.
More information about the Digitalmars-d-learn
mailing list