diff options
author | Abseil Team <absl-team@google.com> | 2024-04-09 09:42:18 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2024-04-09 09:42:59 -0700 |
commit | 8f9e5f0203c8a708c71f4498bf59355d1d7bbf87 (patch) | |
tree | 7b23c4fa4a1b55ff9d09e7ce05e322592ad031d7 /absl/meta | |
parent | 6c3982787d3e1e288ee6a25ec4a1d7ee9d1c571e (diff) | |
download | abseil-8f9e5f0203c8a708c71f4498bf59355d1d7bbf87.tar.gz abseil-8f9e5f0203c8a708c71f4498bf59355d1d7bbf87.tar.bz2 abseil-8f9e5f0203c8a708c71f4498bf59355d1d7bbf87.zip |
Restore string_view detection check
PiperOrigin-RevId: 623195368
Change-Id: Iadb9bdedee4d9b5ced4fff9e6316ee63f9a89ea5
Diffstat (limited to 'absl/meta')
-rw-r--r-- | absl/meta/type_traits.h | 5 | ||||
-rw-r--r-- | absl/meta/type_traits_test.cc | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/absl/meta/type_traits.h b/absl/meta/type_traits.h index a1be47f1..ded55820 100644 --- a/absl/meta/type_traits.h +++ b/absl/meta/type_traits.h @@ -630,6 +630,11 @@ template <typename T> struct IsView : std::integral_constant<bool, std::is_pointer<T>::value || IsViewImpl<T>::value> {}; +#ifdef ABSL_HAVE_STD_STRING_VIEW +template <typename Char, typename Traits> +struct IsView<std::basic_string_view<Char, Traits>> : std::true_type {}; +#endif + #ifdef __cpp_lib_span template <typename T> struct IsView<std::span<T>> : std::true_type {}; diff --git a/absl/meta/type_traits_test.cc b/absl/meta/type_traits_test.cc index e4107e53..1e056bb2 100644 --- a/absl/meta/type_traits_test.cc +++ b/absl/meta/type_traits_test.cc @@ -45,6 +45,12 @@ static_assert(IsOwnerAndNotView<std::string>::value, "string is an owner, not a view"); static_assert(IsOwnerAndNotView<std::wstring>::value, "wstring is an owner, not a view"); +#ifdef ABSL_HAVE_STD_STRING_VIEW +static_assert(!IsOwnerAndNotView<std::string_view>::value, + "string_view is a view, not an owner"); +static_assert(!IsOwnerAndNotView<std::wstring_view>::value, + "wstring_view is a view, not an owner"); +#endif template <class T, class U> struct simple_pair { |