Declaring rvalue function arguments
Jonathan M Davis via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Jan 31 19:29:22 PST 2016
On Sunday, January 31, 2016 17:48:53 maik klein via Digitalmars-d-learn wrote:
> On Sunday, 31 January 2016 at 17:42:19 UTC, anonymous wrote:
> > On 31.01.2016 18:21, Matt Elkins wrote:
> > I don't know if this works in all cases, but it passes that
> > simple test:
> >
> > ----
> > @disable void foo(ref int x);
> > void foo(int x) {}
> >
> > void main()
> > {
> > foo(5); /* works */
> > int y = 5;
> > foo(y); /* error */
> > }
> > ----
>
> The problem is that x will be copied afaik which is not what you
> want if you want to deal with ownership.
In D, if you pass an rvalue to a function or assign it to a variable, then
it's going to be moved, not copied. So by making it illegal to pass an
lvalue to a function, you guarantee that every argument it gets was moved
and not copied.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list