63 template<
typename T>
class Span;
110 return copied_iterator;
115 return a.current_ != b.current_;
120 return a.current_ == b.current_;
146 return start_ + index;
154 return (
a.size_ == b.size_) && (
a.start_ == b.start_ ||
a.size_ == 0);
200 return start_ + size_ - 1;
208 return start_ + size_;
224 return value >= start_ && value < start_ + size_;
constexpr friend bool operator!=(const Iterator &a, const Iterator &b)
constexpr Iterator(int64_t current)
std::forward_iterator_tag iterator_category
std::ptrdiff_t difference_type
constexpr int64_t operator*() const
const int64_t & reference
constexpr friend bool operator==(const Iterator &a, const Iterator &b)
constexpr Iterator operator++(int) const
constexpr Iterator & operator++()
constexpr int64_t first() const
constexpr int64_t one_after_last() const
constexpr IndexRange slice(IndexRange range) const
constexpr friend bool operator==(IndexRange a, IndexRange b)
constexpr int64_t operator[](int64_t index) const
Span< int64_t > as_span() const
constexpr Iterator end() const
friend std::ostream & operator<<(std::ostream &stream, IndexRange range)
constexpr IndexRange(int64_t start, int64_t size)
constexpr int64_t size() const
constexpr IndexRange()=default
constexpr IndexRange after(int64_t n) const
constexpr int64_t start() const
constexpr IndexRange before(int64_t n) const
constexpr Iterator begin() const
constexpr IndexRange(int64_t size)
constexpr IndexRange slice(int64_t start, int64_t size) const
constexpr bool contains(int64_t value) const
constexpr int64_t last() const