Added missing owner<T>, corrected array_view::sub().
diff --git a/include/array_view.h b/include/array_view.h
index 80656a4..2e061db 100644
--- a/include/array_view.h
+++ b/include/array_view.h
@@ -1824,15 +1824,15 @@
template<size_t Offset, size_t Count>
_CONSTEXPR array_view<ValueTypeOpt, Count> sub() const _NOEXCEPT
{
- static_assert(bounds_type::static_size == dynamic_range || ((Offset == 0 || Offset < bounds_type::static_size) && Offset + Count <= bounds_type::static_size), "Index is out of bound");
- fail_fast_assert(bounds_type::static_size != dynamic_range || ((Offset == 0 || Offset < this->size()) && Offset + Count <= this->size()));
+ static_assert(bounds_type::static_size == dynamic_range || ((Offset == 0 || Offset <= bounds_type::static_size) && Offset + Count <= bounds_type::static_size), "Index is out of bound");
+ fail_fast_assert(bounds_type::static_size != dynamic_range || ((Offset == 0 || Offset <= this->size()) && Offset + Count <= this->size()));
return { this->data() + Offset, Count };
}
- _CONSTEXPR array_view<ValueTypeOpt, dynamic_range> sub(size_type offset, size_type count) const _NOEXCEPT
+ _CONSTEXPR array_view<ValueTypeOpt, dynamic_range> sub(size_type offset, size_type count = dynamic_range) const _NOEXCEPT
{
- fail_fast_assert((offset == 0 || offset < this->size()) && offset + count <= this->size());
- return { this->data() + offset, count };
+ fail_fast_assert((offset == 0 || offset <= this->size()) && (count == dynamic_range || (offset + count) <= this->size()));
+ return { this->data() + offset, count == dynamic_range ? this->length() - offset : count };
}
// size