Bring back foreach int indexes

bachmeier no at spam.net
Wed Nov 29 16:06:32 UTC 2023


On Wednesday, 29 November 2023 at 15:48:25 UTC, Steven 
Schveighoffer wrote:
> On Wednesday, 29 November 2023 at 14:56:50 UTC, Steven 
> Schveighoffer wrote:
>> I don’t know how many times I get caught with size_t indexes 
>> but I want them to be int or uint. It’s especially painful in 
>> my class that I’m teaching where I don’t want to yet explain 
>> why int doesn’t work there and have to introduce casting or 
>> use to!int. All for the possibility that I have an array 
>> larger than 2 billion elements.
>>
>> I am forgetting why we removed this in the first place.
>>
>> Can we have the compiler insert an assert at the loop start 
>> that the bounds are in range when you use a smaller int type? 
>> Clearly the common case is that the array is small enough for 
>> int indexes.
>
>
> For those who are unaware, this used to work:
>
> ```d
> auto arr = [1, 2, 3];
> foreach(int idx, v; arr) {
>     ...
> }
> ```
>
> But was removed at some point. I think it should be brought 
> back (we are bringing stuff back now, right? Like hex strings?)
>
> -Steve

Along the same lines, this won't even compile:

```
foreach(int idx; 0..arr.length) {
}
```

Apparently someone decided the explicit `int` is an implicit 
conversion.


More information about the Digitalmars-d mailing list