diff options
author | Abseil Team <absl-team@google.com> | 2024-04-02 09:03:50 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2024-04-02 09:04:52 -0700 |
commit | 5953a4885ae8dc4baa3f66292d6519e0ec254313 (patch) | |
tree | 1e93b3aa12a6d30806e0f7ba5d3ba61f562dee73 /absl/strings/string_view_test.cc | |
parent | d1dd9cd60a7167bc6e2f34877660e747e5b92842 (diff) | |
download | abseil-5953a4885ae8dc4baa3f66292d6519e0ec254313.tar.gz abseil-5953a4885ae8dc4baa3f66292d6519e0ec254313.tar.bz2 abseil-5953a4885ae8dc4baa3f66292d6519e0ec254313.zip |
Add internal traits to absl::string_view for lifetimebound detection
This helps compilers that understand `ABSL_ATTRIBUTE_LIFETIME_BOUND` flag constructs such as
`absl::StatusOr<std::string_view> str = std::string(...)`
as error-prone.
PiperOrigin-RevId: 621196818
Change-Id: I78d4c66854cde9d06eaaec05869d956376109d9c
Diffstat (limited to 'absl/strings/string_view_test.cc')
-rw-r--r-- | absl/strings/string_view_test.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/absl/strings/string_view_test.cc b/absl/strings/string_view_test.cc index 251f1842..e978fc3f 100644 --- a/absl/strings/string_view_test.cc +++ b/absl/strings/string_view_test.cc @@ -32,6 +32,7 @@ #include "gtest/gtest.h" #include "absl/base/config.h" +#include "absl/meta/type_traits.h" #if defined(ABSL_HAVE_STD_STRING_VIEW) || defined(__ANDROID__) // We don't control the death messaging when using std::string_view. @@ -46,6 +47,14 @@ namespace { +static_assert(!absl::type_traits_internal::IsOwner<absl::string_view>::value && + absl::type_traits_internal::IsView<absl::string_view>::value, + "string_view is a view, not an owner"); + +static_assert(absl::type_traits_internal::IsLifetimeBoundAssignment< + absl::string_view, std::string>::value, + "lifetimebound assignment not detected"); + // A minimal allocator that uses malloc(). template <typename T> struct Mallocator { |