DList.Range magically becomes empty.

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Feb 26 08:31:05 PST 2015


On 2/26/15 11:07 AM, Tobias Pankrath wrote:
> On Thursday, 26 February 2015 at 15:57:22 UTC, Steven Schveighoffer wrote:
>> On 2/25/15 4:58 AM, Ivan Timokhin wrote:
>>> Tobias Pankrath wrote:
>>>
>>>>     writefln("stack: %s", stack[]); //fine
>>>
>>> This call consumes all ranges stored in stack, so they're empty
>>> afterwards.
>>>
>>
>> This has to be a bug. stack[] should produce a range that can be
>> iterated without destroying the data in the container. If it doesn't,
>> it should be supported.
>>
>> -Steve
>
> Haven't looked into it, but I'd rather say that writefln (or
> formattedWrite, or what is used) should only take ranges per ref, if
> they cannot be copied and cannot be saved.

OK, this is more complex than I thought. Both stack[] and list[] are 
providing copies.

I mistakenly thought that because stack prints empty that the list has 
been emptied. It hasn't, just the ranges are emptied.

Yes, I agree, it's writefln that should be fixed here.

-Steve


More information about the Digitalmars-d-learn mailing list