range algorithms on container class
Paul Backus
snarwin at gmail.com
Wed Jan 15 16:13:05 UTC 2020
On Thursday, 9 January 2020 at 10:26:07 UTC, Jonathan M Davis
wrote:
> On Wednesday, January 8, 2020 10:56:20 PM MST rikki cattermole
> via Digitalmars-d-learn wrote:
>> Slicing via the opSlice operator overload is a convention, not
>> a requirement.
>
> It's not a requirement, but it's more than a convention. If you
> use the container with foreach, the compiler will call opSlice
> on the container to get a range. So, there's no need to
> implement opApply to iterate over a container with foreach. You
> could choose to implement a container with opApply and use a
> function other than opSlice for getting a range, but the
> compiler understands enough to try to slice the container for
> you automatically when using it with foreach.
>
> - Jonathan M Davis
Is this documented in the language spec anywhere? I don't see
anything about it in the section on foreach [1] or the section on
slice operator overloading [2].
[1] https://dlang.org/spec/statement.html#foreach-statement
[2] https://dlang.org/spec/operatoroverloading.html#slice
More information about the Digitalmars-d-learn
mailing list