diff options
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.cc | 15 |
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 5d74b814b584..8f59a1e4a210 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 |