aboutsummaryrefslogtreecommitdiff
path: root/absl/strings/string_view_test.cc
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2024-04-02 09:03:50 -0700
committerCopybara-Service <copybara-worker@google.com>2024-04-02 09:04:52 -0700
commit5953a4885ae8dc4baa3f66292d6519e0ec254313 (patch)
tree1e93b3aa12a6d30806e0f7ba5d3ba61f562dee73 /absl/strings/string_view_test.cc
parentd1dd9cd60a7167bc6e2f34877660e747e5b92842 (diff)
downloadabseil-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.cc9
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 {