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()