On 24 April 2013 04:44, Walter Bright <newshound2@digitalmars.com> wrote:
On 4/23/2013 8:33 AM, Manu wrote:
"The r-value being passed is assigned to a stack allocated temporary, which has
a lifetime that is identical to any other local variable, ie, the lifetime of
the function in which it appears."
There, I defined it.

Locals have a lifetime that is terminated by the closing } of the scope they appear in. There can be many such scopes in a function.

There's also the issue of:

  a || b || c

If b creates a temporary, it's life ends at the end of the expression or statement - it's complicated.

Is it actually complicated?
Enclosing scope seems fine too. Can you suggest a case where it could escalate to an outer scope via a scope-ref argument?
So let's say then, that lifetime should be identical to a local declared in the same location. No change of any rules is required, it will work as expected.