Skip to content

Commit e31f8d7

Browse files
Werner HenzeWerner Henze
authored andcommitted
check for dynamic_extent
1 parent e8fa8b1 commit e31f8d7

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

include/gsl/span

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)