Add dynamic_extent constant to third_party/base/span.h Bring into closer conformance with the spec, but more importantly avoids a signed/unsigned mismatch in Subspan()'s default count argument value. Change-Id: I01fc43cac686f88b264ba9a2ce12c799bedc660d Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/89010 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/third_party/base/span.h b/third_party/base/span.h index e8b8b14..e45dcec 100644 --- a/third_party/base/span.h +++ b/third_party/base/span.h
@@ -18,6 +18,8 @@ namespace pdfium { +constexpr size_t dynamic_extent = static_cast<size_t>(-1); + template <typename T> class span; @@ -149,9 +151,6 @@ // static extent template parameter. Other differences are documented in // subsections below. // -// Differences from [views.constants]: -// - no dynamic_extent constant -// // Differences in constants and types: // - no element_type type alias // - no index_type type alias @@ -230,11 +229,11 @@ return span(data_.Get() + (size_ - count), count); } - const span subspan(size_t pos, size_t count = -1) const { - const auto npos = static_cast<size_t>(-1); + const span subspan(size_t pos, size_t count = dynamic_extent) const { CHECK(pos <= size_); - CHECK(count == npos || count <= size_ - pos); - return span(data_.Get() + pos, count == npos ? size_ - pos : count); + CHECK(count == dynamic_extent || count <= size_ - pos); + return span(data_.Get() + pos, + count == dynamic_extent ? size_ - pos : count); } // [span.obs], span observers