From 64c52b3e89470891462641e605db20cade906b70 Mon Sep 17 00:00:00 2001 From: Alexey Shakula Date: Mon, 13 Nov 2023 10:08:10 -0500 Subject: [PATCH] Added absl::string_view constructor from std::string view if latter is available and those two are not the same --- absl/strings/string_view.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/absl/strings/string_view.h b/absl/strings/string_view.h index f88b05b6bac..cc8d734fbdc 100644 --- a/absl/strings/string_view.h +++ b/absl/strings/string_view.h @@ -43,9 +43,11 @@ #include "absl/base/optimization.h" #include "absl/base/port.h" -#ifdef ABSL_USES_STD_STRING_VIEW - +#ifdef ABSL_HAVE_STD_STRING_VIEW #include // IWYU pragma: export +#endif + +#ifdef ABSL_USES_STD_STRING_VIEW namespace absl { ABSL_NAMESPACE_BEGIN @@ -201,6 +203,12 @@ class string_view { constexpr string_view(const char* data, size_type len) : ptr_(data), length_(CheckLengthInternal(len)) {} +#ifdef ABSL_HAVE_STD_STRING_VIEW + // Implicit constructor from std::string view + constexpr string_view(std::string_view str) + : ptr_(str.data ()), length_(CheckLengthInternal(str.size())) {} +#endif + // NOTE: Harmlessly omitted to work around gdb bug. // constexpr string_view(const string_view&) noexcept = default; // string_view& operator=(const string_view&) noexcept = default;