diff --git a/include/gsl/span b/include/gsl/span index a71ed95..f307e6e 100644 --- a/include/gsl/span +++ b/include/gsl/span @@ -582,7 +582,7 @@ public: template constexpr span first() const noexcept { - static_assert(Count <= Extent, + static_assert(Extent == dynamic_extent || Count <= Extent, "first() cannot extract more elements from a span than it contains."); Expects(Count <= size()); return span{data(), Count}; @@ -594,7 +594,7 @@ public: // clang-format on constexpr span last() const noexcept { - static_assert(Count <= Extent, + static_assert(Extent == dynamic_extent || Count <= Extent, "last() cannot extract more elements from a span than it contains."); Expects(Count <= size()); return span{data() + (size() - Count), Count}; @@ -607,7 +607,8 @@ public: constexpr auto subspan() const noexcept -> typename details::calculate_subspan_type::type { - static_assert(Extent >= Offset && (Count == dynamic_extent || Count <= Extent - Offset), + static_assert(Extent == dynamic_extent || (Extent >= Offset && (Count == dynamic_extent || + Count <= Extent - Offset)), "subspan() cannot extract more elements from a span than it contains."); Expects((size() >= Offset) && (Count == dynamic_extent || (Count <= size() - Offset))); using type =