Afonso Januário
0d28a3f082
Make std::hash<basic_json> consistent with operator== for numbers
...
operator== converts between number_integer, number_unsigned, and
number_float before comparing, so json(0), json(0U), and json(0.0)
all compare equal. hash() folded the specific value_t into the
result for each of the three numeric cases, giving each a distinct
hash and breaking the standard Hash requirement that a == b implies
hash(a) == hash(b). A std::unordered_set could therefore hold all
three as separate elements even though they compare equal.
hash() now treats all three numeric variants the same way: it
converts the value to number_float_t and combines it with a single
shared type tag, so any two numbers operator== considers equal hash
identically regardless of which internal type actually holds them.
Updated the accompanying test to check this consistency directly
(including via an actual unordered_set) instead of asserting that 0,
0U, and 0.0 hash differently, since that assumption was the bug.
Also corrected the function's own doc comment and the std::hash API
docs, which described the old behavior as intended.
Fixes #5400
Signed-off-by: Afonso Januário <afonso-januario@hotmail.com >
Signed-off-by: Niels Lohmann <mail@nlohmann.me >
2026-10-06 22:51:39 +02:00
..
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-04 12:00:31 +02:00
2026-10-04 12:00:31 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-05-22 08:01:46 +02:00
2025-05-22 08:01:46 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-09-15 20:46:37 +02:00
2026-09-15 20:46:37 +02:00
2026-09-15 20:46:37 +02:00
2026-09-15 20:46:37 +02:00
2026-09-15 20:46:37 +02:00
2026-09-15 20:46:37 +02:00
2026-09-15 20:46:37 +02:00
2026-09-15 20:46:37 +02:00
2026-09-15 20:46:37 +02:00
2026-09-15 20:46:37 +02:00
2026-10-02 11:32:15 +02:00
2026-09-15 20:46:37 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-09-16 08:07:00 +02:00
2025-01-19 10:42:21 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-09-16 08:07:00 +02:00
2025-01-19 10:42:21 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-04 12:13:49 +02:00
2026-10-04 12:13:49 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-07-02 15:59:36 +02:00
2026-07-02 15:59:36 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-09-27 16:56:21 +02:00
2026-09-27 16:56:21 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-06 22:33:29 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-05-13 07:59:16 +02:00
2026-05-13 07:59:16 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-05-13 07:59:16 +02:00
2026-05-13 07:59:16 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-05-13 07:59:16 +02:00
2026-05-13 07:59:16 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-01-01 20:00:39 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-01-18 22:59:09 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-01-18 22:59:09 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2026-05-16 10:04:22 +02:00
2026-05-16 10:04:22 +02:00
2026-05-16 10:04:22 +02:00
2026-05-16 10:04:22 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-04-11 10:41:14 +02:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2026-05-18 20:37:07 +02:00
2026-05-18 20:37:07 +02:00
2026-05-18 20:37:07 +02:00
2026-05-18 20:37:07 +02:00
2026-05-18 20:37:07 +02:00
2026-05-18 20:37:07 +02:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-04-11 10:41:14 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-09-16 08:07:00 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-08-20 12:32:50 +02:00
2026-08-04 08:45:02 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-07-09 20:39:59 +02:00
2026-07-09 20:39:59 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-07-02 15:59:36 +02:00
2026-07-02 15:59:36 +02:00
2025-01-17 06:53:35 +01:00
2026-10-06 22:51:39 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-09-27 16:56:21 +02:00
2026-09-27 16:56:21 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-05-22 08:01:46 +02:00
2025-05-22 08:01:46 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-09-16 08:07:00 +02:00
2025-09-16 08:07:00 +02:00
2026-10-06 22:33:29 +02:00
2026-10-06 22:33:29 +02:00