Это, по-видимому, попытка предоставить универсальную хеш-функцию для целых чисел (хотя я не вижу, что добавляет xor).Совершенно ясно, что не будет работать для большинства других типов.Включая число с плавающей запятой.
Обеспечение хорошей хэш-функции для значения с плавающей запятой затруднительно;если бы я пытался создать общий хеш, я бы, вероятно, начал с проверки на 0, NaN и Inf и возврата предопределенных хешей для них (или полного отклонения NaN, поскольку оно не является допустимым хеш-значением), а затем просто с помощьюстандартный хэш строки в нижележащих байтах.Это по крайней мере сделает хеширование совместимым с оператором ==.Но проблемы точности означают, что == само по себе может не быть тем, что нужно.Ни <, в случае std :: map, поскольку std :: map использует <для определения отношения равенства, и в зависимости от источника чисел с плавающей запятой или удваивается, такое отношение равенства может не подходить для хеш-таблицы. </p>
В любом случае, не ожидайте найти стандартную хеш-функцию для типов с плавающей запятой.