Avoid redundant hashing

The return type of `std::hash()` is larger (or equal) than what
`qHash()` requires so we can omit hashing it again.
This commit is contained in:
Chocobo1
2022-03-12 21:40:58 +08:00
parent 926d51839f
commit b3fb6bd990
3 changed files with 14 additions and 14 deletions

View File

@@ -131,12 +131,16 @@ bool operator<(const Digest32<N> &left, const Digest32<N> &right)
< static_cast<typename Digest32<N>::UnderlyingType>(right);
}
template <int N>
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
template <int N>
std::size_t qHash(const Digest32<N> &key, const std::size_t seed = 0)
#else
uint qHash(const Digest32<N> &key, const uint seed = 0)
#endif
{
return ::qHash(std::hash<typename Digest32<N>::UnderlyingType>()(key), seed);
return ::qHash(static_cast<typename Digest32<N>::UnderlyingType>(key), seed);
}
#else
template <int N>
uint qHash(const Digest32<N> &key, const uint seed = 0)
{
return static_cast<uint>((std::hash<typename Digest32<N>::UnderlyingType> {})(key)) ^ seed;
}
#endif