Thanks all for the quick replies.

You're right- I am mixing the container with the range to ill effect. I'm just doing this for practice so I'm not tied to any one solution, but I was trying to make the container work as much like a built-in type as possible. With an array the above tests work (I assume because each operation is implicitly a new slice?).

I found I can fix the above example by aliasing a function that returns a slice of the member array instead of aliasing the field itself, but that may still be too close a relationship of the container/range. My instinct (which could be completely wrong) is that it's fine since the container is taking responsibility for creating valid ranges, it is just doing so implicitly.

User code having to explicitly take ranges (either through opSlice or a property/method) isn't a terrible thing, but it would be convenient to not have to take that extra step.

Reply via email to