From 19b3c95727316cef3b0b40eaf37f6645a876f8d2 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Mon, 23 Apr 2018 15:50:21 -0700 Subject: - 3a9532fb2d6ae45c3cba44c9bb0dbdfc1558b7d3 Fix the description of Span::subspan(). by Abseil Team - bae1a1c21924bd31fa7315eff05ea6158d9e7947 Port the symbolizer to Windows. by Derek Mauro - 2253c04c1a4f39d9581772f1dc4491878aa3831f Support absl::Hex() and absl::Dec() as arguments to absl:... by Jorg Brown - 552c3ac259e9c254fda9244755487f3423d2fe4b Internal change by Jorg Brown GitOrigin-RevId: 3a9532fb2d6ae45c3cba44c9bb0dbdfc1558b7d3 Change-Id: I448133c9bb6d837037c12b45a9a16a7945049453 --- absl/types/span.h | 18 ++++++++++++++---- absl/types/variant_test.cc | 12 +----------- 2 files changed, 15 insertions(+), 15 deletions(-) (limited to 'absl/types') diff --git a/absl/types/span.h b/absl/types/span.h index d365f17d5219..0ca30d1d0f08 100644 --- a/absl/types/span.h +++ b/absl/types/span.h @@ -458,10 +458,20 @@ class Span { // Span::subspan() // - // Returns a `Span` starting at element `pos` and of length `len`, with - // proper bounds checking to ensure `len` does not exceed the ptr+size of the - // original array. (Spans whose `len` would point past the end of the array - // will throw a `std::out_of_range`.) + // Returns a `Span` starting at element `pos` and of length `len`. Both `pos` + // and `len` are of type `size_type` and thus non-negative. Parameter `pos` + // must be <= size(). Any `len` value that points past the end of the span + // will be trimmed to at most size() - `pos`. A default `len` value of `npos` + // ensures the returned subspan continues until the end of the span. + // + // Examples: + // + // std::vector vec = {10, 11, 12, 13}; + // absl::MakeSpan(vec).subspan(1, 2); // {11, 12} + // absl::MakeSpan(vec).subspan(2, 8); // {12, 13} + // absl::MakeSpan(vec).subspan(1); // {11, 12, 13} + // absl::MakeSpan(vec).subspan(4); // {} + // absl::MakeSpan(vec).subspan(5); // throws std::out_of_range constexpr Span subspan(size_type pos = 0, size_type len = npos) const { return (pos <= len_) ? Span(ptr_ + pos, span_internal::Min(len_ - pos, len)) diff --git a/absl/types/variant_test.cc b/absl/types/variant_test.cc index c4676c10c62d..262bd9446c18 100644 --- a/absl/types/variant_test.cc +++ b/absl/types/variant_test.cc @@ -119,19 +119,9 @@ struct ConversionException {}; template struct ExceptionOnConversion { - // Suppress MSVC 2017 warning "noreturn function has a non-void return type". -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable : 4646) -#endif // _MSC_VER - - [[noreturn]] operator T() const { // NOLINT(runtime/explicit) + operator T() const { // NOLINT(runtime/explicit) throw ConversionException(); } - -#ifdef _MSC_VER -#pragma warning(pop) -#endif // _MSC_VER }; // Forces a variant into the valueless by exception state. -- cgit 1.4.1