Use absl::Hash as QuicheLinkedHashMap default hasher. Credits to MrJia1997 for the suggestion at https://github.com/google/quiche/issues/10. In addition to the argument made on that issue, see https://abseil.io/docs/cpp/guides/hash for additional advantages of absl::Hash over std::hash. PiperOrigin-RevId: 414004301
diff --git a/common/quiche_linked_hash_map.h b/common/quiche_linked_hash_map.h index a52863e..9923df3 100644 --- a/common/quiche_linked_hash_map.h +++ b/common/quiche_linked_hash_map.h
@@ -23,6 +23,8 @@ #include <utility> #include "absl/container/node_hash_map.h" +#include "absl/hash/hash.h" +#include "common/platform/api/quiche_export.h" #include "common/platform/api/quiche_logging.h" namespace quiche { @@ -34,11 +36,12 @@ // We also keep a set<list::iterator> for find. Since std::list is a // doubly-linked list, the iterators should remain stable. -template <class Key, - class Value, - class Hash = std::hash<Key>, - class Eq = std::equal_to<Key>> -class QuicheLinkedHashMap { +// QUICHE_NO_EXPORT comments suppress erroneous presubmit failures. +template <class Key, // QUICHE_NO_EXPORT + class Value, // QUICHE_NO_EXPORT + class Hash = absl::Hash<Key>, // QUICHE_NO_EXPORT + class Eq = std::equal_to<Key>> // QUICHE_NO_EXPORT +class QUICHE_EXPORT_PRIVATE QuicheLinkedHashMap { private: typedef std::list<std::pair<Key, Value>> ListType; typedef absl::node_hash_map<Key, typename ListType::iterator, Hash, Eq>