В каждый цикл комбинирования помещается больше информации, что может уменьшить количество вызовов комбината и, надеюсь, даст более качественную хеш-функцию.
Улучшен алгоритм хеширования чисел с плавающей точкой.
На Cygwin используют двоичную хеш-функцию для чисел с плавающей точкой, так как Cygwin не имеет приличных функций с плавающей точкой для<longdouble>.
Никогда не используйте<fpclass>, который не поддерживает<longdouble>.
Изменили предупреждения в устаревших заголовках с 1.34.0 на ошибки. Они будут удалены в будущей версии Boost.
Перенесенные заголовки деталей из<boost/functional/detail>, так как они являются частью функционального/хэша, а не функционального.<boost/functional/detail/container_fwd.hpp>был перемещен в<boost/detail/container_fwd.hpp>, поскольку он используется за пределами этой библиотеки, остальные были перемещены в<boost/functional/hash/detail>.
Переместите реализацию hash_fwd.hpp в подкаталог хеширования, оставив заголовок пересылки в старом месте. Вы все равно должны использовать старое местоположение, новое местоположение в основном для реализации и возможной модулялизации.
Билет 3866: Не декларируйте контейнеры, используя параллельную библиотеку gcc, чтобы пользователь мог остановить объявление вперед, определив макрос<BOOST_DETAIL_NO_CONTAINER_FWD>.
Билет 4038: Избегайте хеширования 0,5 и 0 на одно и то же число.
Прекратите использовать устаревшие<BOOST_HAS_*>макросы.
Добавьте опцию для предотвращения неявных преобразований при вызове<hash_value>, определив<BOOST_HASH_NO_IMPLICIT_CASTS>. При использовании<boost::hash>для типа, который не объявлен<hash_value>, но имеет неявное преобразование в тип, который делает, он будет использовать это неявное преобразование в хеширование. Что иногда может пойти очень неправильно, например, используя преобразование в bool и только хеширование до 2 возможных значений. Поскольку исправление этого является прорывным изменением, и к нему подходили только довольно поздно в цикле выпуска с небольшим обсуждением, на данный момент он включен. Это, или что-то подобное, станет по умолчанию в будущей версии.
Добавить поддержку для<boost::int128_type>и<boost::uint128_type>там, где это доступно - в настоящее время только<__int128>и<unsigned__int128>на некоторых версиях gcc.
На платформах, которые, как известно, имеют стандартные функции плавающей точки, не используют автоматическое обнаружение, которое может сломаться, если есть неоднозначные перегрузки.
Исправьте неопределенное поведение при использовании хэша двоичного поплавка (Томас Хеллер).
Статья Change Log раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 14. Boost.Functional/Hash может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.