about summary refs log tree commit diff
path: root/third_party/abseil_cpp/absl/container/node_hash_map_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/abseil_cpp/absl/container/node_hash_map_test.cc')
-rw-r--r--third_party/abseil_cpp/absl/container/node_hash_map_test.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/third_party/abseil_cpp/absl/container/node_hash_map_test.cc b/third_party/abseil_cpp/absl/container/node_hash_map_test.cc
index 5d74b814b5..8f59a1e4a2 100644
--- a/third_party/abseil_cpp/absl/container/node_hash_map_test.cc
+++ b/third_party/abseil_cpp/absl/container/node_hash_map_test.cc
@@ -254,6 +254,21 @@ TEST(NodeHashMap, EraseIf) {
   }
 }
 
+// This test requires std::launder for mutable key access in node handles.
+#if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606
+TEST(NodeHashMap, NodeHandleMutableKeyAccess) {
+  node_hash_map<std::string, std::string> map;
+
+  map["key1"] = "mapped";
+
+  auto nh = map.extract(map.begin());
+  nh.key().resize(3);
+  map.insert(std::move(nh));
+
+  EXPECT_THAT(map, testing::ElementsAre(Pair("key", "mapped")));
+}
+#endif
+
 }  // namespace
 }  // namespace container_internal
 ABSL_NAMESPACE_END