You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make operator* and operator-> const in all iterators.
C++ iterators basically model pointers. Hence a const pointer can still be dereferenced to a mutable object (`T * const` *not* `const T*`).
This is not true for many iterators in itertools since they only have non-`const` versions of `operator*`. This also violates C++ iterator concepts,
see [the github issue](ryanhaining#91).
This change basically replaces all non-`const` dereference operators with `const` ones. This was straight forward in most cases:
- Some iterators own the data they return (note: that probably violates [`LegacyForwardIterator`](https://en.cppreference.com/w/cpp/named_req/ForwardIterator)). So those data fields were changed to `mutable`.
- `GroupBy` advances the group while dereferencing. This does not work when the iterator is constant. Moved the advancing to the constructor and increment operators. This is the only real behavior change, please review carefully.
0 commit comments