From 62cf6a70414e15b356ec4f712ca8758133674f28 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Fri, 15 May 2020 08:23:25 -0700 Subject: Export of internal Abseil changes -- dc36565216b3022abb5a3c92f46fb4079bda869e by Samuel Benzaquen : Add support for std::reference_wrapper to absl::Hash. PiperOrigin-RevId: 311733171 GitOrigin-RevId: dc36565216b3022abb5a3c92f46fb4079bda869e Change-Id: I74543390446c2b7f6d856935aa36f28539810eef --- absl/hash/hash_test.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'absl/hash/hash_test.cc') diff --git a/absl/hash/hash_test.cc b/absl/hash/hash_test.cc index b38d46d47dd3..39ba24a85afb 100644 --- a/absl/hash/hash_test.cc +++ b/absl/hash/hash_test.cc @@ -581,6 +581,24 @@ TEST(HashValueTest, Maps) { MM{{1, "foo"}, {1, "foo"}, {43, "bar"}}, MM{{1, "foo"}, {43, "baz"}}))); } +TEST(HashValueTest, ReferenceWrapper) { + EXPECT_TRUE(is_hashable>::value); + + Private p1{1}, p10{10}; + EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(std::make_tuple( + p1, p10, std::ref(p1), std::ref(p10), std::cref(p1), std::cref(p10)))); + + EXPECT_TRUE(is_hashable>::value); + int one = 1, ten = 10; + EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(std::make_tuple( + one, ten, std::ref(one), std::ref(ten), std::cref(one), std::cref(ten)))); + + EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly( + std::make_tuple(std::tuple>(std::ref(one)), + std::tuple>(std::ref(ten)), + std::tuple(one), std::tuple(ten)))); +} + template struct IsHashCallable : std::false_type {}; -- cgit 1.4.1