BigInt foreach loop

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Aug 9 18:08:05 PDT 2017


On 8/9/17 5:40 PM, H. S. Teoh via Digitalmars-d-learn wrote:
> On Wed, Aug 09, 2017 at 09:34:26PM +0000, Q. Schroll via Digitalmars-d-learn wrote:
>> On Friday, 4 August 2017 at 16:40:08 UTC, Stefan Koch wrote:
>>> [..]
>>>
>>> foreach(x;A .. B)
>>> it's lowerd to
>>> auto limit = B;
>>> auto key = A;
>>> for(auto x = key;key < limit;++key)
>>> {
>>>   // use x
>>> }
>>
>> That's enough to know that the foreach loop does not reuse the space
>> for the iteration variable. That was what I cared about.
> 
> Note that using BigInt as iteration variable will probably cause a
> BigInt allocation per iteration, because operations on BigInt in general
> will allocate a new BigInt result. So `++key` will probably create a new
> instance of BigInt each time it's executed.

Right, but this is not a limitation of the API, just the implementation. 
It could be improved.

https://issues.dlang.org/show_bug.cgi?id=17736

-Steve





More information about the Digitalmars-d-learn mailing list