@@ -582,7 +582,7 @@ public:
582582 template <std::size_t Count>
583583 constexpr span<element_type, Count> first() const noexcept
584584 {
585- static_assert(Count <= Extent,
585+ static_assert(Extent == dynamic_extent || Count <= Extent,
586586 "first() cannot extract more elements from a span than it contains.");
587587 Expects(Count <= size());
588588 return span<element_type, Count>{data(), Count};
@@ -594,7 +594,7 @@ public:
594594 // clang-format on
595595 constexpr span<element_type, Count> last() const noexcept
596596 {
597- static_assert(Count <= Extent,
597+ static_assert(Extent == dynamic_extent || Count <= Extent,
598598 "last() cannot extract more elements from a span than it contains.");
599599 Expects(Count <= size());
600600 return span<element_type, Count>{data() + (size() - Count), Count};
@@ -607,7 +607,8 @@ public:
607607 constexpr auto subspan() const noexcept ->
608608 typename details::calculate_subspan_type<ElementType, Extent, Offset, Count>::type
609609 {
610- static_assert(Extent >= Offset && (Count == dynamic_extent || Count <= Extent - Offset),
610+ static_assert(Extent == dynamic_extent || (Extent >= Offset && (Count == dynamic_extent ||
611+ Count <= Extent - Offset)),
611612 "subspan() cannot extract more elements from a span than it contains.");
612613 Expects((size() >= Offset) && (Count == dynamic_extent || (Count <= size() - Offset)));
613614 using type =
0 commit comments