diff --git a/nano/secure/pending_info.cpp b/nano/secure/pending_info.cpp index 24aa14b3ad..637f4adf74 100644 --- a/nano/secure/pending_info.cpp +++ b/nano/secure/pending_info.cpp @@ -65,3 +65,8 @@ nano::account const & nano::pending_key::key () const { return account; } + +bool nano::pending_key::operator< (nano::pending_key const & other_a) const +{ + return account == other_a.account ? hash < other_a.hash : account < other_a.account; +} diff --git a/nano/secure/pending_info.hpp b/nano/secure/pending_info.hpp index 4e69460399..584337e95e 100644 --- a/nano/secure/pending_info.hpp +++ b/nano/secure/pending_info.hpp @@ -28,8 +28,21 @@ class pending_key final pending_key (nano::account const &, nano::block_hash const &); bool deserialize (nano::stream &); bool operator== (nano::pending_key const &) const; + bool operator< (nano::pending_key const &) const; nano::account const & key () const; nano::account account{}; nano::block_hash hash{ 0 }; }; } // namespace nano + +namespace std +{ +template <> +struct hash<::nano::pending_key> +{ + size_t operator() (::nano::pending_key const & data_a) const + { + return hash<::nano::uint512_union>{}({ ::nano::uint256_union{ data_a.account.number () }, data_a.hash }); + } +}; +}