rvalue references

deadalnix deadalnix at gmail.com
Tue Apr 23 21:07:31 PDT 2013


On Wednesday, 24 April 2013 at 03:33:07 UTC, Manu wrote:
> On 24 April 2013 04:44, Walter Bright 
> <newshound2 at 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.

The issue is that in this case for instance, the temporary is 
conditionally created. Then cannot bind to the enclosing scope.

As temporaries can now be created all over the place, it is 
mandatory to define them in a much more specific way than it is 
done right now.


More information about the Digitalmars-d mailing list