https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120622
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- Previously std::copy with random access iterators would find the distance between the iterators and then loops that many times, i.e. for (auto n = last - first; n > 0; --n) now we just loop on the iterators directly: for (; first != last; ++first) So the code now has a requirement that != works correctly, and the map_iterator::operator!= uses map_iterator::equal which is where the error happens. But all iterators are required to support operator== and operator!= so that fact that it fails suggests the map_iterator<I> is just not a valid iterator, where I is: const {anonymous}::pythonic::numpy::ndenumerate_iterator<{anonymous}::pythonic::types::ndarray<long int, {anonymous}::pythonic::types::pshape<long int, long int>>