Discussion: Rvalue refs and a Move construtor for D
Suleyman
sahmi.soulaimane at gmail.com
Wed Sep 4 17:41:02 UTC 2019
On Wednesday, 4 September 2019 at 16:37:30 UTC, Suleyman wrote:
> On Wednesday, 4 September 2019 at 14:56:03 UTC, kinke wrote:
>> On Wednesday, 4 September 2019 at 14:45:34 UTC, Suleyman wrote:
>>> I think you scored a valid point here. This is where having
>>> rvalue ref comes in handy. In C++ assigning an rvalue ref to
>>> an lvalue does move not copy.
>>>
>>> C++ example:
>>> ```
>>> void fun(T&& arg)
>>> {
>>> T var = arg; // move not copy
>>> }
>>> ```
>>
>> Nope, this calls the copy ctor (https://godbolt.org/z/Ds1vmQ)
>> without an explicit `T var = std::move(arg)`. This is part of
>> what makes C++ rvalue refs difficult to grasp.
>
> Sorry I was mistaken. You're right. But still move information
> is preserved with rvalue ref and it's utilizable for achieving
> what Exil referred to. Ex: https://godbolt.org/z/dlesXb.
Apparently that's why C++' `forward` only moves at the end of the
chain. Unlike `auto ref` in D which has to move at each level all
the way down to the target. C++ Ex: https://godbolt.org/z/S1wacd.
More information about the Digitalmars-d
mailing list