$include_dir="/home/hyper-archives/proto/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [proto] Holding children by copy or reference
From: Mathias Gaunard (mathias.gaunard_at_[hidden])
Date: 2013-09-30 14:08:18
On 30/09/13 08:01, Eric Niebler wrote:
>> Therefore, to avoid performance issues, I'm considering moving to always
>> using references (with the default domain behaviour), and relying on
>> BOOST_FORCEINLINE to make it work as expected.
>
> Why is FORCEINLINE needed?
The scenario is
terminal a, b, c, r;
auto tmp = a*b*c;
r = tmp + tmp;
Assuming everything is held by reference, when used in r, tmp will refer
to a dangling reference (the a*b node).
If everything is inlined, the problem may be avoided because it doesn't
require things to be present on the stack.
Of course, it's quite hacky.