diff --git a/source/mijin/container/stride_span.hpp b/source/mijin/container/stride_span.hpp index 47c26d7..33aed97 100644 --- a/source/mijin/container/stride_span.hpp +++ b/source/mijin/container/stride_span.hpp @@ -117,10 +117,14 @@ public: StrideSpan& operator=(const StrideSpan&) = default; auto operator<=>(const StrideSpan&) const noexcept = default; + constexpr operator bool() const noexcept { return !empty(); } + constexpr bool operator!() const noexcept { return empty(); } + reference operator[](size_type index); const_reference operator[](size_type index) const; - [[nodiscard]] constexpr size_type size() const noexcept { return bytediff(begin_, end_) / strideBytes_; } + [[nodiscard]] constexpr size_type size() const noexcept { return strideBytes_ == 0 ? 0 : bytediff(begin_, end_) / strideBytes_; } + [[nodiscard]] constexpr bool empty() const noexcept { return begin_ == end_; } [[nodiscard]] iterator begin() { return StrideSpanIterator(begin_, strideBytes_, begin_, end_); } [[nodiscard]] const_iterator begin() const { return StrideSpanIterator(begin_, strideBytes_, begin_, end_); }