Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
6.0, 6.10
-
None
-
eb1342a3c (dev), db36fea29 (6.9), 1a580ca2a (dev), c05ae82ef (dev)
Description
The implementations of qHashMulti() and qHashMultiCommutative() are implemented using calls to qHash() without a seed parameter:
constexpr result_type operator()(size_t seed, const T &t) const noexcept(noexcept(qHash(t))) // combiner taken from N3876 / boost::hash_combine { return seed ^ (qHash(t) + 0x9e3779b9 + (seed << 6) + (seed >> 2)) ; } ... constexpr result_type operator()(size_t seed, const T &t) const noexcept(noexcept(qHash(t))) { return seed + qHash(t); } // don't use xor!
This results in using the slower implementation of qHashBits() for all of our string classes.
I don't know if qHashMultiCommutative() is fixable, but qHashMulti() definitely is.
Requires BC break to fix.
Attachments
Issue Links
- resulted from
-
QTBUG-134683 Deprecated one argument version of qHash still required in qHashMulti
-
- Closed
-