> On 15 Sep 2018, at 21:57, Frank Heckenbach <[email protected]> wrote:
> 
> Hans Åberg wrote:
> 
>>>> The idea would be to write something equivalent to
>>>> return make_unique<foo>($1, $2, $3);
>>>> and the Bison writes something like
>>>> $$ = std::move(action_k(...return make_unique<foo>($1, $2, $3);...))
>>> 
>>> I don't follow you. What is action_k, and how would that cause
>>> moving from $1 etc.?
>> 
>> Action k in the switch statement.
> 
> Huh? I really don't get what your proposed syntax is supposed to
> mean. Is action_k supposed to be a lambda (what else could appear in
> an expression and contain a statement inside)? What would it do?

Just produce an r-value.

>> Move operators were originally designed to avoid copying in returns.
> 
> I don't know if this was so or not originally, but I'm talking about
> moving arguments, not return values. That's what I've been saying
> the whole time, including the thread subject! Moving the return
> value is no big problem most of the time: "$$ = make_unique ..."
> works without any std::move because a function result(*) is
> automatically an rvalue.

The idea is to create an r-value situation, which then translates into a move 
assignment.


Reply via email to