https://issues.dlang.org/show_bug.cgi?id=19904

[email protected] changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #1 from [email protected] ---
(In reply to Manu from comment #0)
> Note there is no `forward!args` then it is passed to `emplaceRef`. This
> causes the arguments to be unnecessarily copied, potentially executing a
> bunch of copy code.

No copy code should be executed. The `auto ref` param will be a ref for an
lvalue arg, and a moved bitcopy for an rvalue arg (D move semantics - arg isn't
destructed and param's postblit is skipped, but a memcpy is performed).

emplaceRef uses `auto ref Args` too. So when calling it in emplace() with its
(lvalue) parameters as arguments, they are passed by reference.

--

Reply via email to