www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Operator for pass by move

reply Per =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
Have anybody considered dedicating a specific operator for 
pass-by-move semantics in assignments and argument passing?

For instance,

```d
y = x;
z = f(y);
```

copies `x` and `y` whereas

```d
y = <<x;
z = f(<<y);
```

moves `x` and `y`.
Dec 19 2022
parent reply Paul Backus <snarwin gmail.com> writes:
On Monday, 19 December 2022 at 11:12:54 UTC, Per Nordlöw wrote:
 Have anybody considered dedicating a specific operator for 
 pass-by-move semantics in assignments and argument passing?
Is `core.lifetime.move` not good enough?
Dec 19 2022
parent reply deadalnix <deadalnix gmail.com> writes:
On Monday, 19 December 2022 at 17:43:12 UTC, Paul Backus wrote:
 On Monday, 19 December 2022 at 11:12:54 UTC, Per Nordlöw wrote:
 Have anybody considered dedicating a specific operator for 
 pass-by-move semantics in assignments and argument passing?
Is `core.lifetime.move` not good enough?
There is no reason for either. The compiler should definitively be able to move things when appropriate (if they are not reused after) and this is allowed by the current spec.
Dec 21 2022
parent Timon Gehr <timon.gehr gmx.ch> writes:
On 12/21/22 17:50, deadalnix wrote:
 On Monday, 19 December 2022 at 17:43:12 UTC, Paul Backus wrote:
 On Monday, 19 December 2022 at 11:12:54 UTC, Per Nordlöw wrote:
 Have anybody considered dedicating a specific operator for 
 pass-by-move semantics in assignments and argument passing?
Is `core.lifetime.move` not good enough?
There is no reason for either. The compiler should definitively be able to move things when appropriate (if they are not reused after) and this is allowed by the current spec.
The reason is that you may want to be explicit about your moves and have the type checker complain if it's actually used again. (This is also why core.lifetime.move is not great.)
Dec 21 2022