Skip to content

Commit 3865e08

Browse files
committed
[libc++] Remove redundant assertion in std::span::subspan
That is already checked later in the function as `__count <= size() - __offset`. rdar://107884996 Differential Revision: https://reviews.llvm.org/D148030
1 parent b02bd53 commit 3865e08

File tree

2 files changed

+2
-4
lines changed

2 files changed

+2
-4
lines changed

libcxx/include/span

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,6 @@ public:
327327
subspan(size_type __offset, size_type __count = dynamic_extent) const noexcept
328328
{
329329
_LIBCPP_ASSERT(__offset <= size(), "span<T, N>::subspan(offset, count): offset out of range");
330-
_LIBCPP_ASSERT(__count <= size() || __count == dynamic_extent, "span<T, N>::subspan(offset, count): count out of range");
331330
if (__count == dynamic_extent)
332331
return {data() + __offset, size() - __offset};
333332
_LIBCPP_ASSERT(__count <= size() - __offset, "span<T, N>::subspan(offset, count): offset + count out of range");
@@ -493,7 +492,6 @@ public:
493492
subspan(size_type __offset, size_type __count = dynamic_extent) const noexcept
494493
{
495494
_LIBCPP_ASSERT(__offset <= size(), "span<T>::subspan(offset, count): offset out of range");
496-
_LIBCPP_ASSERT(__count <= size() || __count == dynamic_extent, "span<T>::subspan(offset, count): count out of range");
497495
if (__count == dynamic_extent)
498496
return {data() + __offset, size() - __offset};
499497
_LIBCPP_ASSERT(__count <= size() - __offset, "span<T>::subspan(offset, count): offset + count out of range");

libcxx/test/libcxx/containers/views/views.span/span.sub/assert.subspan.pass.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ int main(int, char**) {
3838
TEST_LIBCPP_ASSERT_FAILURE(s.subspan(4), "span<T>::subspan(offset, count): offset out of range");
3939
TEST_LIBCPP_ASSERT_FAILURE(s.subspan<4>(), "span<T>::subspan<Offset, Count>(): Offset out of range");
4040

41-
TEST_LIBCPP_ASSERT_FAILURE(s.subspan(0, 4), "span<T>::subspan(offset, count): count out of range");
41+
TEST_LIBCPP_ASSERT_FAILURE(s.subspan(0, 4), "span<T>::subspan(offset, count): offset + count out of range");
4242
TEST_LIBCPP_ASSERT_FAILURE((s.subspan<0, 4>()), "span<T>::subspan<Offset, Count>(): Offset + Count out of range");
4343

4444
TEST_LIBCPP_ASSERT_FAILURE(s.subspan(1, 3), "span<T>::subspan(offset, count): offset + count out of range");
@@ -50,7 +50,7 @@ int main(int, char**) {
5050
TEST_LIBCPP_ASSERT_FAILURE(s.subspan(4), "span<T, N>::subspan(offset, count): offset out of range");
5151
// s.subspan<4>() caught at compile-time (tested in libcxx/test/std/containers/views/views.span/span.sub/subspan.verify.cpp)
5252

53-
TEST_LIBCPP_ASSERT_FAILURE(s.subspan(0, 4), "span<T, N>::subspan(offset, count): count out of range");
53+
TEST_LIBCPP_ASSERT_FAILURE(s.subspan(0, 4), "span<T, N>::subspan(offset, count): offset + count out of range");
5454
// s.subspan<0, 4>() caught at compile-time (tested in libcxx/test/std/containers/views/views.span/span.sub/subspan.verify.cpp)
5555

5656
TEST_LIBCPP_ASSERT_FAILURE(s.subspan(1, 3), "span<T, N>::subspan(offset, count): offset + count out of range");

0 commit comments

Comments
 (0)