pop & popFront combined

via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Nov 2 03:46:17 PST 2014


On Saturday, 1 November 2014 at 13:54:31 UTC, Nordlöw wrote:
> On Saturday, 1 November 2014 at 13:38:22 UTC, Marc Schütz wrote:
>> If you want to avoid the temporary variable, you could write:
>>
>>    scope(success) r.popFront;
>>    return r.moveFront;
>
> Does this solution cost performance?

I think DMD doesn't generate good code for it; IIRC it lowers 
scope(success) to a strange construct with an invisible variable 
and a try/catch. Don't know the reasons for this, maybe it has 
changed by now. Theoretically it would just need to move the 
contents of the scope(success) after the evaluation of the 
returned expression, which is cheap.


More information about the Digitalmars-d-learn mailing list