On Saturday, 6 June 2020 at 11:58:06 UTC, Basile B. wrote:
On Saturday, 6 June 2020 at 08:55:20 UTC, Jack Applegame wrote:
Should it compile?
I think, it should.

maybe it shouldn't but then with another message, for example

    Error, cannot `void` initialize a `const` declaration.

since that makes very little sense, at least as a local variable. (as a member, this can be initialized in a constructor)

The moveEmpalce should compile, just like this does:

import std.conv : emplace;

emplace(&a, 'a');

But, in the case of emplacing into a const, either should be @system (moveEmplace is always @system, but `emplace` for this case is not at the moment).

One could do a

emplace(&a, move(b))

but that's more moves (and I believe current emplace even would insert a spurious copy there).

This is what we get for delegating emplacement and moves into a library instead of having appropriate intrinsics.

Reply via email to