raw_ptr: add std::hash support
Change-Id: I6bdcc8fa747d5d76d385115d995dd45809864255
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/207675
Reviewed-by: Arthur Sonzogni <arthursonzogni@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
diff --git a/src/dawn/partition_alloc/partition_alloc/pointers/raw_ptr.h b/src/dawn/partition_alloc/partition_alloc/pointers/raw_ptr.h
index f61f04f..e674987 100644
--- a/src/dawn/partition_alloc/partition_alloc/pointers/raw_ptr.h
+++ b/src/dawn/partition_alloc/partition_alloc/pointers/raw_ptr.h
@@ -367,6 +367,13 @@
bool operator()(const raw_ptr<T, Traits>& lhs, T* rhs) const { return lhs < rhs; }
};
+template <typename T, RawPtrTraits Traits>
+struct hash<raw_ptr<T, Traits>> {
+ typedef raw_ptr<T, Traits> argument_type;
+ typedef std::size_t result_type;
+ result_type operator()(argument_type const& ptr) const { return hash<T*>()(ptr.get()); }
+};
+
// Define for cases where raw_ptr<T> holds a pointer to an array of type T. This is consistent with
// definition of std::iterator_traits<T*>. Algorithms like std::binary_search need that.
template <typename T, RawPtrTraits Traits>