On 10/2/17 2:31 PM, Per Nordlöw wrote:
On Monday, 2 October 2017 at 18:14:24 UTC, Jacob Carlborg wrote:
On 2017-10-02 17:57, Nordlöw wrote:
Is implementing opCall(size_t) for structures such as array containers that already define opIndex and opSlice deprecated?

I can't find any documentation on the subject on when opCall should be defined to enable foreach (isIterable).

opCall is not related to foreach. It's used to overload the call operator, i.e. ().

struct Foo
{
    void opCall() {};
}

Foo foo;
foo();

Are you thinking of opApply [1]?

[1] https://dlang.org/spec/statement.html#foreach_over_struct_and_classes

Ahh, yes of course.

It seems like defining opIndex anf opSlice is enough in the array container case. Why do we have opApply as well? Non-random access?

First, it should be front, popFront, and empty, not opIndex and opSlice.

Second, opApply has existed forever (even in D1). Ranges are more recent.

Third, opApply has some characteristics that are difficult to implement via ranges.

-Steve

Reply via email to