Rewrite some string_view methods to avoid a -Wunreachable-code warning The previous form was required for C++11 compatibility (C++11 support was dropped in 2020). PiperOrigin-RevId: 698018101 Change-Id: I814ec708ea211c4b90ee6a812db9961b5423c22e
diff --git a/absl/strings/string_view.h b/absl/strings/string_view.h index 2803429..0f64a78 100644 --- a/absl/strings/string_view.h +++ b/absl/strings/string_view.h
@@ -302,11 +302,10 @@ // and an exception of type `std::out_of_range` will be thrown on invalid // access. constexpr const_reference at(size_type i) const { - return ABSL_PREDICT_TRUE(i < size()) - ? ptr_[i] - : ((void)base_internal::ThrowStdOutOfRange( - "absl::string_view::at"), - ptr_[i]); + if (ABSL_PREDICT_FALSE(i >= size())) { + base_internal::ThrowStdOutOfRange("absl::string_view::at"); + } + return ptr_[i]; } // string_view::front() @@ -394,11 +393,10 @@ // `pos > size`. // Use absl::ClippedSubstr if you need a truncating substr operation. constexpr string_view substr(size_type pos = 0, size_type n = npos) const { - return ABSL_PREDICT_FALSE(pos > length_) - ? (base_internal::ThrowStdOutOfRange( - "absl::string_view::substr"), - string_view()) - : string_view(ptr_ + pos, Min(n, length_ - pos)); + if (ABSL_PREDICT_FALSE(pos > length_)) { + base_internal::ThrowStdOutOfRange("absl::string_view::substr"); + } + return string_view(ptr_ + pos, Min(n, length_ - pos)); } // string_view::compare()