Removing broken specialization of std::hash<std::tuple>
authorTom Jackson <tjackson@fb.com>
Wed, 8 Aug 2012 23:47:01 +0000 (16:47 -0700)
committerTudor Bosman <tudorb@fb.com>
Sun, 26 Aug 2012 18:12:17 +0000 (11:12 -0700)
Summary: ^

Test Plan: Unit tests

Reviewed By: delong.j@fb.com

FB internal diff: D543586

folly/Hash.h
folly/test/HashTest.cpp

index efe0f047194015b89e25b29fe544642662e28118..52676e5548265ea29b8237f054be02891cef4614 100644 (file)
@@ -338,15 +338,6 @@ namespace std {
       return folly::hash::hash_combine(x.first, x.second);
     }
   };
-
-  // Same as above, but for arbitrary tuples.
-  template <typename... Ts>
-  class hash<std::tuple<Ts...> > {
-  public:
-    size_t operator()(const Ts&... ts) const {
-      return folly::hash::hash_combine(ts...);
-    }
-  };
 } // namespace std
 
 #endif
index 954b6b6d299a6ade605a04381f776a89e2717ba5..dc3d403c690f4d0bee23cf815db885bd12da2432 100644 (file)
@@ -19,6 +19,7 @@
 #include <gtest/gtest.h>
 #include <stdint.h>
 #include <unordered_map>
+#include <utility>
 
 using namespace folly::hash;
 
@@ -172,6 +173,16 @@ TEST(Hash, hasher) {
   EXPECT_EQ(get_default(m, 4), 5);
 }
 
+TEST(Hash, pair) {
+  auto a = std::make_pair(1, 2);
+  auto b = std::make_pair(3, 4);
+  auto c = std::make_pair(1, 2);
+  EXPECT_EQ(hash_combine(a),
+            hash_combine(c));
+  EXPECT_NE(hash_combine(b),
+            hash_combine(c));
+}
+
 TEST(Hash, hash_combine) {
   EXPECT_NE(hash_combine(1, 2), hash_combine(2, 1));
 }