Example of the perils of binding rvalues to const ref
Andrei Alexandrescu via Digitalmars-d
digitalmars-d at puremagic.com
Wed Sep 17 08:03:13 PDT 2014
On 9/17/14, 3:03 AM, IgorStepanov wrote:
> BTW. About r-values:
>
> void fun(S s)
> {
> fun2(s); //pass s by value.
> }
>
> Now, compiler inserts postblit call before func2 call and dtor before
> end of fun.
Is the call to dtor part of fun(), or part of fun()'s call sequence?
I've always meant to look at that. LMK if you know for sure.
> However, it is able to doesn't it, because after fun2 call,
> s isn't used.
> Thus, we can implement last postblit optimization:
> If compiler want to insert postblit, and object is't used after this
> postblit, compiler is able to doesn't generate postblit and last dtor
> calls.
> Is there limitation of this optimization?
> It may 90 percent to solve a r-value ref task.
I think rvalues are already not postblitted into functions. Indeed more
postblits can be optimized away for variables are are last used in a
function call.
Andrei
More information about the Digitalmars-d
mailing list