commit 0a8d31c: [Minor] Improve smart hash helper

Vsevolod Stakhov vsevolod at highsecure.ru
Tue Jun 15 14:28:07 UTC 2021


Author: Vsevolod Stakhov
Date: 2021-06-15 14:36:14 +0100
URL: https://github.com/rspamd/rspamd/commit/0a8d31c8959c2470b2e53646f2926c1f3d109562

[Minor] Improve smart hash helper

---
 src/libutil/cxx/util.hxx | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/libutil/cxx/util.hxx b/src/libutil/cxx/util.hxx
index 3eeb6d20d..fa9aa1802 100644
--- a/src/libutil/cxx/util.hxx
+++ b/src/libutil/cxx/util.hxx
@@ -31,7 +31,7 @@ namespace rspamd {
  * Transparent smart pointers hashing
  */
 template<typename T>
-struct shared_ptr_equal {
+struct smart_ptr_equal {
 	using is_transparent = void; /* We want to find values in a set of shared_ptr by reference */
 	auto operator()(const std::shared_ptr<T> &a, const std::shared_ptr<T> &b) const {
 		return (*a) == (*b);
@@ -42,14 +42,26 @@ struct shared_ptr_equal {
 	auto operator()(const T &a, const std::shared_ptr<T> &b) const {
 		return a == (*b);
 	}
+	auto operator()(const std::unique_ptr<T> &a, const std::unique_ptr<T> &b) const {
+		return (*a) == (*b);
+	}
+	auto operator()(const std::unique_ptr<T> &a, const T &b) const {
+		return (*a) == b;
+	}
+	auto operator()(const T &a, const std::unique_ptr<T> &b) const {
+		return a == (*b);
+	}
 };
 
 template<typename T>
-struct shared_ptr_hash {
+struct smart_ptr_hash {
 	using is_transparent = void; /* We want to find values in a set of shared_ptr by reference */
 	auto operator()(const std::shared_ptr<T> &a) const {
 		return std::hash<T>()(*a);
 	}
+	auto operator()(const std::unique_ptr<T> &a) const {
+		return std::hash<T>()(*a);
+	}
 	auto operator()(const T &a) const {
 		return std::hash<T>()(a);
 	}


More information about the Commits mailing list