rvalue references

bitwise via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 9 07:41:57 PDT 2015


On Tue, 09 Jun 2015 07:04:36 -0400, Stewart Gordon <smjg_1998 at yahoo.com>  
wrote:

> Apologies if I've missed something - I haven't had much time to keep up  
> with the discussions lately.
>
> What is the use case for rvalue references in a garbage-collected  
> language?
>
> To me, it sounds like people want this feature for D purely because C++  
> has it.
>
> Stewart.
>


If you have a function that takes a huge struct, like, as Namespace says,  
containing a float[16], you would want to pass by reference.

Currently, given the following code,

struct Mat4 {
     float elements[16];
}

void TakeMatrix(ref Mat4 m) { }

Then you must use it like this:

Mat4 tmp = Mat4();
TakeMatrix(tmp);

With r-value references(auto ref), you can do the following, and 'tmp'  
will be 'auto'matically created for you:

TakeMatrix(Mat4());

   Bit


More information about the Digitalmars-d mailing list