From 7f51c8dba4b453bf0cfa1302fe9421f4de1f6927 Mon Sep 17 00:00:00 2001 From: Christian Mazakas Date: Wed, 5 Jan 2022 12:31:33 -0800 Subject: [PATCH 1/9] Rearrange contents of the changelog so that notes for newer release precede notes for older ones --- doc/changes.qbk | 518 ++++++++++++++++++++++++------------------------ 1 file changed, 259 insertions(+), 259 deletions(-) diff --git a/doc/changes.qbk b/doc/changes.qbk index 8297eec1..6f744c10 100644 --- a/doc/changes.qbk +++ b/doc/changes.qbk @@ -10,134 +10,187 @@ [section:changes Change Log] -[h2 Review Version] +[h2 Boost 1.67.0] -Initial review version, for the review conducted from 7th December 2007 to -16th December 2007. +* Improved C++17 support: + * Add template deduction guides from the standard. + * Use a simple implementation of `optional` in node handles, so + that they're closer to the standard. + * Add missing `noexcept` specifications to `swap`, `operator=` + and node handles, and change the implementation to match. + Using `std::allocator_traits::is_always_equal`, or our own + implementation when not available, and + `boost::is_nothrow_swappable` in the implementation. +* Improved C++20 support: + * Use `boost::to_address`, which has the proposed C++20 semantics, + rather than the old custom implementation. +* Add `element_type` to iterators, so that `std::pointer_traits` + will work. +* Use `std::piecewise_construct` on recent versions of Visual C++, + and other uses of the Dinkumware standard library, + now using Boost.Predef to check compiler and library versions. +* Use `std::iterator_traits` rather than the boost iterator traits + in order to remove dependency on Boost.Iterator. +* Remove iterators' inheritance from `std::iterator`, which is + deprecated in C++17, thanks to Daniela Engert + ([@https://github.com/boostorg/unordered/pull/7 PR#7]). +* Stop using `BOOST_DEDUCED_TYPENAME`. +* Update some Boost include paths. +* Rename some internal methods, and variables. +* Various testing improvements. +* Miscellaneous internal changes. -[h2 1.35.0 Add-on - 31st March 2008] +[h2 Boost 1.66.0] -Unofficial release uploaded to vault, to be used with Boost 1.35.0. Incorporated -many of the suggestions from the review. +* Simpler move construction implementation. +* Documentation fixes ([pull_request 6]). -* Improved portability thanks to Boost regression testing. -* Fix lots of typos, and clearer text in the documentation. -* Fix floating point to `std::size_t` conversion when calculating sizes from - the max load factor, and use `double` in the calculation for greater accuracy. -* Fix some errors in the examples. +[h2 Boost 1.65.0] -[h2 Boost 1.36.0] +* Add deprecated attributes to `quick_erase` and `erase_return_void`. + I really will remove them in a future version this time. +* Small standards compliance fixes: + * `noexpect` specs for `swap` free functions. + * Add missing `insert(P&&)` methods. -First official release. +[h2 Boost 1.64.0] +* Initial support for new C++17 member functions: + `insert_or_assign` and `try_emplace` in `unordered_map`, +* Initial support for `merge` and `extract`. + Does not include transferring nodes between + `unordered_map` and `unordered_multimap` or between `unordered_set` and + `unordered_multiset` yet. That will hopefully be in the next version of + Boost. -* Rearrange the internals. -* Move semantics - full support when rvalue references are available, emulated - using a cut down version of the Adobe move library when they are not. -* Emplace support when rvalue references and variadic template are available. -* More efficient node allocation when rvalue references and variadic template - are available. -* Added equality operators. +[h2 Boost 1.63.0] -[h2 Boost 1.37.0] +* Check hint iterator in `insert`/`emplace_hint`. +* Fix some warnings, mostly in the tests. +* Manually write out `emplace_args` for small numbers of arguments - + should make template error messages a little more bearable. +* Remove superfluous use of `boost::forward` in emplace arguments, + which fixes emplacing string literals in old versions of Visual C++. +* Fix an exception safety issue in assignment. If bucket allocation + throws an exception, it can overwrite the hash and equality functions while + leaving the existing elements in place. This would mean that the function + objects wouldn't match the container elements, so elements might be in the + wrong bucket and equivalent elements would be incorrectly handled. +* Various reference documentation improvements. +* Better allocator support ([ticket 12459]). +* Make the no argument constructors implicit. +* Implement missing allocator aware constructors. +* Fix assigning the hash/key equality functions for empty containers. +* Remove unary/binary_function from the examples in the documentation. + They are removed in C++17. +* Support 10 constructor arguments in emplace. It was meant to support up to 10 + arguments, but an off by one error in the preprocessor code meant it only + supported up to 9. -* Rename overload of `emplace` with hint, to `emplace_hint` as specified in - [@http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2691.pdf n2691]. -* Provide forwarding headers at `` and - ``. -* Move all the implementation inside `boost/unordered`, to assist - modularization and hopefully make it easier to track changes in subversion. +[h2 Boost 1.62.0] -[h2 Boost 1.38.0] +* Remove use of deprecated `boost::iterator`. +* Remove `BOOST_NO_STD_DISTANCE` workaround. +* Remove `BOOST_UNORDERED_DEPRECATED_EQUALITY` warning. +* Simpler implementation of assignment, fixes an exception safety issue + for `unordered_multiset` and `unordered_multimap`. Might be a little slower. +* Stop using return value SFINAE which some older compilers have issues + with. -* Use [@boost:/libs/core/swap.html `boost::swap`]. -* [@https://svn.boost.org/trac/boost/ticket/2237 Ticket 2237]: - Document that the equality and inequality operators are undefined for two - objects if their equality predicates aren't equivalent. Thanks to Daniel - Krügler. -* [@https://svn.boost.org/trac/boost/ticket/1710 Ticket 1710]: - Use a larger prime number list. Thanks to Thorsten Ottosen and Hervé - Brönnimann. -* Use - [@boost:/libs/type_traits/doc/html/boost_typetraits/category/alignment.html - aligned storage] to store the types. This changes the way the allocator is - used to construct nodes. It used to construct the node with two calls to - the allocator's `construct` method - once for the pointers and once for the - value. It now constructs the node with a single call to construct and - then constructs the value using in place construction. -* Add support for C++0x initializer lists where they're available (currently - only g++ 4.4 in C++0x mode). +[h2 Boost 1.58.0] -[h2 Boost 1.39.0] +* Remove unnecessary template parameter from const iterators. +* Rename private `iterator` typedef in some iterator classes, as it + confuses some traits classes. +* Fix move assignment with stateful, propagate_on_container_move_assign + allocators ([ticket 10777]). +* Fix rare exception safety issue in move assignment. +* Fix potential overflow when calculating number of buckets to allocate + ([@https://github.com/boostorg/unordered/pull/4 GitHub #4]). -* [@https://svn.boost.org/trac/boost/ticket/2756 Ticket 2756]: Avoid a warning - on Visual C++ 2009. -* Some other minor internal changes to the implementation, tests and - documentation. -* Avoid an unnecessary copy in `operator[]`. -* [@https://svn.boost.org/trac/boost/ticket/2975 Ticket 2975]: Fix length of - prime number list. +[h2 Boost 1.57.0] -[h2 Boost 1.40.0] +* Fix the `pointer` typedef in iterators ([ticket 10672]). +* Fix Coverity warning + ([@https://github.com/boostorg/unordered/pull/2 GitHub #2]). -* [@https://svn.boost.org/trac/boost/ticket/2975 Ticket 2975]: - Store the prime list as a preprocessor sequence - so that it will always get - the length right if it changes again in the future. -* [@https://svn.boost.org/trac/boost/ticket/1978 Ticket 1978]: - Implement `emplace` for all compilers. -* [@https://svn.boost.org/trac/boost/ticket/2908 Ticket 2908], - [@https://svn.boost.org/trac/boost/ticket/3096 Ticket 3096]: - Some workarounds for old versions of borland, including adding explicit - destructors to all containers. -* [@https://svn.boost.org/trac/boost/ticket/3082 Ticket 3082]: - Disable incorrect Visual C++ warnings. -* Better configuration for C++0x features when the headers aren't available. -* Create less buckets by default. +[h2 Boost 1.56.0] -[h2 Boost 1.41.0 - Major update] +* Fix some shadowed variable warnings ([ticket 9377]). +* Fix allocator use in documentation ([ticket 9719]). +* Always use prime number of buckets for integers. Fixes performance + regression when inserting consecutive integers, although makes other + uses slower ([ticket 9282]). +* Only construct elements using allocators, as specified in C++11 standard. -* The original version made heavy use of macros to sidestep some of the older - compilers' poor template support. But since I no longer support those - compilers and the macro use was starting to become a maintenance burden it - has been rewritten to use templates instead of macros for the implementation - classes. +[h2 Boost 1.55.0] -* The container object is now smaller thanks to using `boost::compressed_pair` - for EBO and a slightly different function buffer - now using a bool instead - of a member pointer. +* Avoid some warnings ([ticket 8851], [ticket 8874]). +* Avoid exposing some detail functions via. ADL on the iterators. +* Follow the standard by only using the allocators' construct and destroy + methods to construct and destroy stored elements. Don't use them for internal + data like pointers. -* Buckets are allocated lazily which means that constructing an empty container - will not allocate any memory. +[h2 Boost 1.54.0] -[h2 Boost 1.42.0] +* Mark methods specified in standard as `noexpect`. More to come in the next + release. +* If the hash function and equality predicate are known to both have nothrow + move assignment or construction then use them. -* Support instantiating the containers with incomplete value types. -* Reduced the number of warnings (mostly in tests). -* Improved codegear compatibility. -* [@http://svn.boost.org/trac/boost/ticket/3693 Ticket 3693]: - Add `erase_return_void` as a temporary workaround for the current - `erase` which can be inefficient because it has to find the next - element to return an iterator. -* Add templated find overload for compatible keys. -* [@http://svn.boost.org/trac/boost/ticket/3773 Ticket 3773]: - Add missing `std` qualifier to `ptrdiff_t`. -* Some code formatting changes to fit almost all lines into 80 characters. +[h2 Boost 1.53.0] -[h2 Boost 1.43.0] +* Remove support for the old pre-standard variadic pair constructors, and + equality implementation. Both have been deprecated since Boost 1.48. +* Remove use of deprecated config macros. +* More internal implementation changes, including a much simpler + implementation of `erase`. -* [@http://svn.boost.org/trac/boost/ticket/3966 Ticket 3966]: - `erase_return_void` is now `quick_erase`, which is the - [@http://home.roadrunner.com/~hinnant/issue_review/lwg-active.html#579 - current forerunner for resolving the slow erase by iterator], although - there's a strong possibility that this may change in the future. The old - method name remains for backwards compatibility but is considered deprecated - and will be removed in a future release. -* Use Boost.Exception. -* Stop using deprecated `BOOST_HAS_*` macros. +[h2 Boost 1.52.0] -[h2 Boost 1.45.0] +* Faster assign, which assigns to existing nodes where possible, rather than + creating entirely new nodes and copy constructing. +* Fixed bug in `erase_range` ([ticket 7471]). +* Reverted some of the internal changes to how nodes are created, especially + for C++11 compilers. 'construct' and 'destroy' should work a little better + for C++11 allocators. +* Simplified the implementation a bit. Hopefully more robust. -* Fix a bug when inserting into an `unordered_map` or `unordered_set` using - iterators which returns `value_type` by copy. +[h2 Boost 1.51.0] + +* Fix construction/destruction issue when using a C++11 compiler with a + C++03 allocator ([ticket 7100]). +* Remove a `try..catch` to support compiling without exceptions. +* Adjust SFINAE use to try to support g++ 3.4 ([ticket 7175]). +* Updated to use the new config macros. + +[h2 Boost 1.50.0] + +* Fix equality for `unordered_multiset` and `unordered_multimap`. +* [@https://svn.boost.org/trac/boost/ticket/6857 Ticket 6857]: + Implement `reserve`. +* [@https://svn.boost.org/trac/boost/ticket/6771 Ticket 6771]: + Avoid gcc's `-Wfloat-equal` warning. +* [@https://svn.boost.org/trac/boost/ticket/6784 Ticket 6784]: + Fix some Sun specific code. +* [@https://svn.boost.org/trac/boost/ticket/6190 Ticket 6190]: + Avoid gcc's `-Wshadow` warning. +* [@https://svn.boost.org/trac/boost/ticket/6905 Ticket 6905]: + Make namespaces in macros compatible with `bcp` custom namespaces. + Fixed by Luke Elliott. +* Remove some of the smaller prime number of buckets, as they may make + collisions quite probable (e.g. multiples of 5 are very common because + we used base 10). +* On old versions of Visual C++, use the container library's implementation + of `allocator_traits`, as it's more likely to work. +* On machines with 64 bit std::size_t, use power of 2 buckets, with Thomas + Wang's hash function to pick which one to use. As modulus is very slow + for 64 bit values. +* Some internal changes. + +[h2 Boost 1.49.0] + +* Fix warning due to accidental odd assignment. +* Slightly better error messages. [h2 Boost 1.48.0 - Major update] @@ -175,186 +228,133 @@ C++11 support has resulted in some breaking changes: the variadic constructors define `BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT`. -[h2 Boost 1.49.0] +[h2 Boost 1.45.0] -* Fix warning due to accidental odd assignment. -* Slightly better error messages. +* Fix a bug when inserting into an `unordered_map` or `unordered_set` using + iterators which returns `value_type` by copy. -[h2 Boost 1.50.0] +[h2 Boost 1.43.0] -* Fix equality for `unordered_multiset` and `unordered_multimap`. -* [@https://svn.boost.org/trac/boost/ticket/6857 Ticket 6857]: - Implement `reserve`. -* [@https://svn.boost.org/trac/boost/ticket/6771 Ticket 6771]: - Avoid gcc's `-Wfloat-equal` warning. -* [@https://svn.boost.org/trac/boost/ticket/6784 Ticket 6784]: - Fix some Sun specific code. -* [@https://svn.boost.org/trac/boost/ticket/6190 Ticket 6190]: - Avoid gcc's `-Wshadow` warning. -* [@https://svn.boost.org/trac/boost/ticket/6905 Ticket 6905]: - Make namespaces in macros compatible with `bcp` custom namespaces. - Fixed by Luke Elliott. -* Remove some of the smaller prime number of buckets, as they may make - collisions quite probable (e.g. multiples of 5 are very common because - we used base 10). -* On old versions of Visual C++, use the container library's implementation - of `allocator_traits`, as it's more likely to work. -* On machines with 64 bit std::size_t, use power of 2 buckets, with Thomas - Wang's hash function to pick which one to use. As modulus is very slow - for 64 bit values. -* Some internal changes. +* [@http://svn.boost.org/trac/boost/ticket/3966 Ticket 3966]: + `erase_return_void` is now `quick_erase`, which is the + [@http://home.roadrunner.com/~hinnant/issue_review/lwg-active.html#579 + current forerunner for resolving the slow erase by iterator], although + there's a strong possibility that this may change in the future. The old + method name remains for backwards compatibility but is considered deprecated + and will be removed in a future release. +* Use Boost.Exception. +* Stop using deprecated `BOOST_HAS_*` macros. -[h2 Boost 1.51.0] +[h2 Boost 1.42.0] -* Fix construction/destruction issue when using a C++11 compiler with a - C++03 allocator ([ticket 7100]). -* Remove a `try..catch` to support compiling without exceptions. -* Adjust SFINAE use to try to support g++ 3.4 ([ticket 7175]). -* Updated to use the new config macros. +* Support instantiating the containers with incomplete value types. +* Reduced the number of warnings (mostly in tests). +* Improved codegear compatibility. +* [@http://svn.boost.org/trac/boost/ticket/3693 Ticket 3693]: + Add `erase_return_void` as a temporary workaround for the current + `erase` which can be inefficient because it has to find the next + element to return an iterator. +* Add templated find overload for compatible keys. +* [@http://svn.boost.org/trac/boost/ticket/3773 Ticket 3773]: + Add missing `std` qualifier to `ptrdiff_t`. +* Some code formatting changes to fit almost all lines into 80 characters. -[h2 Boost 1.52.0] +[h2 Boost 1.41.0 - Major update] -* Faster assign, which assigns to existing nodes where possible, rather than - creating entirely new nodes and copy constructing. -* Fixed bug in `erase_range` ([ticket 7471]). -* Reverted some of the internal changes to how nodes are created, especially - for C++11 compilers. 'construct' and 'destroy' should work a little better - for C++11 allocators. -* Simplified the implementation a bit. Hopefully more robust. +* The original version made heavy use of macros to sidestep some of the older + compilers' poor template support. But since I no longer support those + compilers and the macro use was starting to become a maintenance burden it + has been rewritten to use templates instead of macros for the implementation + classes. -[h2 Boost 1.53.0] +* The container object is now smaller thanks to using `boost::compressed_pair` + for EBO and a slightly different function buffer - now using a bool instead + of a member pointer. -* Remove support for the old pre-standard variadic pair constructors, and - equality implementation. Both have been deprecated since Boost 1.48. -* Remove use of deprecated config macros. -* More internal implementation changes, including a much simpler - implementation of `erase`. +* Buckets are allocated lazily which means that constructing an empty container + will not allocate any memory. -[h2 Boost 1.54.0] +[h2 Boost 1.40.0] -* Mark methods specified in standard as `noexpect`. More to come in the next - release. -* If the hash function and equality predicate are known to both have nothrow - move assignment or construction then use them. +* [@https://svn.boost.org/trac/boost/ticket/2975 Ticket 2975]: + Store the prime list as a preprocessor sequence - so that it will always get + the length right if it changes again in the future. +* [@https://svn.boost.org/trac/boost/ticket/1978 Ticket 1978]: + Implement `emplace` for all compilers. +* [@https://svn.boost.org/trac/boost/ticket/2908 Ticket 2908], + [@https://svn.boost.org/trac/boost/ticket/3096 Ticket 3096]: + Some workarounds for old versions of borland, including adding explicit + destructors to all containers. +* [@https://svn.boost.org/trac/boost/ticket/3082 Ticket 3082]: + Disable incorrect Visual C++ warnings. +* Better configuration for C++0x features when the headers aren't available. +* Create less buckets by default. -[h2 Boost 1.55.0] +[h2 Boost 1.39.0] -* Avoid some warnings ([ticket 8851], [ticket 8874]). -* Avoid exposing some detail functions via. ADL on the iterators. -* Follow the standard by only using the allocators' construct and destroy - methods to construct and destroy stored elements. Don't use them for internal - data like pointers. +* [@https://svn.boost.org/trac/boost/ticket/2756 Ticket 2756]: Avoid a warning + on Visual C++ 2009. +* Some other minor internal changes to the implementation, tests and + documentation. +* Avoid an unnecessary copy in `operator[]`. +* [@https://svn.boost.org/trac/boost/ticket/2975 Ticket 2975]: Fix length of + prime number list. -[h2 Boost 1.56.0] +[h2 Boost 1.38.0] -* Fix some shadowed variable warnings ([ticket 9377]). -* Fix allocator use in documentation ([ticket 9719]). -* Always use prime number of buckets for integers. Fixes performance - regression when inserting consecutive integers, although makes other - uses slower ([ticket 9282]). -* Only construct elements using allocators, as specified in C++11 standard. +* Use [@boost:/libs/core/swap.html `boost::swap`]. +* [@https://svn.boost.org/trac/boost/ticket/2237 Ticket 2237]: + Document that the equality and inequality operators are undefined for two + objects if their equality predicates aren't equivalent. Thanks to Daniel + Krügler. +* [@https://svn.boost.org/trac/boost/ticket/1710 Ticket 1710]: + Use a larger prime number list. Thanks to Thorsten Ottosen and Hervé + Brönnimann. +* Use + [@boost:/libs/type_traits/doc/html/boost_typetraits/category/alignment.html + aligned storage] to store the types. This changes the way the allocator is + used to construct nodes. It used to construct the node with two calls to + the allocator's `construct` method - once for the pointers and once for the + value. It now constructs the node with a single call to construct and + then constructs the value using in place construction. +* Add support for C++0x initializer lists where they're available (currently + only g++ 4.4 in C++0x mode). -[h2 Boost 1.57.0] +[h2 Boost 1.37.0] -* Fix the `pointer` typedef in iterators ([ticket 10672]). -* Fix Coverity warning - ([@https://github.com/boostorg/unordered/pull/2 GitHub #2]). +* Rename overload of `emplace` with hint, to `emplace_hint` as specified in + [@http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2691.pdf n2691]. +* Provide forwarding headers at `` and + ``. +* Move all the implementation inside `boost/unordered`, to assist + modularization and hopefully make it easier to track changes in subversion. -[h2 Boost 1.58.0] +[h2 Boost 1.36.0] -* Remove unnecessary template parameter from const iterators. -* Rename private `iterator` typedef in some iterator classes, as it - confuses some traits classes. -* Fix move assignment with stateful, propagate_on_container_move_assign - allocators ([ticket 10777]). -* Fix rare exception safety issue in move assignment. -* Fix potential overflow when calculating number of buckets to allocate - ([@https://github.com/boostorg/unordered/pull/4 GitHub #4]). +First official release. -[h2 Boost 1.62.0] +* Rearrange the internals. +* Move semantics - full support when rvalue references are available, emulated + using a cut down version of the Adobe move library when they are not. +* Emplace support when rvalue references and variadic template are available. +* More efficient node allocation when rvalue references and variadic template + are available. +* Added equality operators. -* Remove use of deprecated `boost::iterator`. -* Remove `BOOST_NO_STD_DISTANCE` workaround. -* Remove `BOOST_UNORDERED_DEPRECATED_EQUALITY` warning. -* Simpler implementation of assignment, fixes an exception safety issue - for `unordered_multiset` and `unordered_multimap`. Might be a little slower. -* Stop using return value SFINAE which some older compilers have issues - with. +[h2 1.35.0 Add-on - 31st March 2008] -[h2 Boost 1.63.0] +Unofficial release uploaded to vault, to be used with Boost 1.35.0. Incorporated +many of the suggestions from the review. -* Check hint iterator in `insert`/`emplace_hint`. -* Fix some warnings, mostly in the tests. -* Manually write out `emplace_args` for small numbers of arguments - - should make template error messages a little more bearable. -* Remove superfluous use of `boost::forward` in emplace arguments, - which fixes emplacing string literals in old versions of Visual C++. -* Fix an exception safety issue in assignment. If bucket allocation - throws an exception, it can overwrite the hash and equality functions while - leaving the existing elements in place. This would mean that the function - objects wouldn't match the container elements, so elements might be in the - wrong bucket and equivalent elements would be incorrectly handled. -* Various reference documentation improvements. -* Better allocator support ([ticket 12459]). -* Make the no argument constructors implicit. -* Implement missing allocator aware constructors. -* Fix assigning the hash/key equality functions for empty containers. -* Remove unary/binary_function from the examples in the documentation. - They are removed in C++17. -* Support 10 constructor arguments in emplace. It was meant to support up to 10 - arguments, but an off by one error in the preprocessor code meant it only - supported up to 9. +* Improved portability thanks to Boost regression testing. +* Fix lots of typos, and clearer text in the documentation. +* Fix floating point to `std::size_t` conversion when calculating sizes from + the max load factor, and use `double` in the calculation for greater accuracy. +* Fix some errors in the examples. -[h2 Boost 1.64.0] -* Initial support for new C++17 member functions: - `insert_or_assign` and `try_emplace` in `unordered_map`, -* Initial support for `merge` and `extract`. - Does not include transferring nodes between - `unordered_map` and `unordered_multimap` or between `unordered_set` and - `unordered_multiset` yet. That will hopefully be in the next version of - Boost. +[h2 Review Version] -[h2 Boost 1.65.0] - -* Add deprecated attributes to `quick_erase` and `erase_return_void`. - I really will remove them in a future version this time. -* Small standards compliance fixes: - * `noexpect` specs for `swap` free functions. - * Add missing `insert(P&&)` methods. - -[h2 Boost 1.66.0] - -* Simpler move construction implementation. -* Documentation fixes ([pull_request 6]). - -[h2 Boost 1.67.0] - -* Improved C++17 support: - * Add template deduction guides from the standard. - * Use a simple implementation of `optional` in node handles, so - that they're closer to the standard. - * Add missing `noexcept` specifications to `swap`, `operator=` - and node handles, and change the implementation to match. - Using `std::allocator_traits::is_always_equal`, or our own - implementation when not available, and - `boost::is_nothrow_swappable` in the implementation. -* Improved C++20 support: - * Use `boost::to_address`, which has the proposed C++20 semantics, - rather than the old custom implementation. -* Add `element_type` to iterators, so that `std::pointer_traits` - will work. -* Use `std::piecewise_construct` on recent versions of Visual C++, - and other uses of the Dinkumware standard library, - now using Boost.Predef to check compiler and library versions. -* Use `std::iterator_traits` rather than the boost iterator traits - in order to remove dependency on Boost.Iterator. -* Remove iterators' inheritance from `std::iterator`, which is - deprecated in C++17, thanks to Daniela Engert - ([@https://github.com/boostorg/unordered/pull/7 PR#7]). -* Stop using `BOOST_DEDUCED_TYPENAME`. -* Update some Boost include paths. -* Rename some internal methods, and variables. -* Various testing improvements. -* Miscellaneous internal changes. +Initial review version, for the review conducted from 7th December 2007 to +16th December 2007. [endsect] From 8ce147dcbdddc520c77f327a410eaa8b234e2a64 Mon Sep 17 00:00:00 2001 From: Christian Mazakas Date: Wed, 5 Jan 2022 13:36:45 -0800 Subject: [PATCH 2/9] Update change list to use separate sections for each changelist --- doc/changes.qbk | 113 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 85 insertions(+), 28 deletions(-) diff --git a/doc/changes.qbk b/doc/changes.qbk index 6f744c10..14f5c6b0 100644 --- a/doc/changes.qbk +++ b/doc/changes.qbk @@ -10,7 +10,7 @@ [section:changes Change Log] -[h2 Boost 1.67.0] +[section Changes in 1.67.0] * Improved C++17 support: * Add template deduction guides from the standard. @@ -40,12 +40,16 @@ * Various testing improvements. * Miscellaneous internal changes. -[h2 Boost 1.66.0] +[endsect] + +[section Changes in 1.66.0] * Simpler move construction implementation. * Documentation fixes ([pull_request 6]). -[h2 Boost 1.65.0] +[endsect] + +[section Changes in 1.65.0] * Add deprecated attributes to `quick_erase` and `erase_return_void`. I really will remove them in a future version this time. @@ -53,7 +57,10 @@ * `noexpect` specs for `swap` free functions. * Add missing `insert(P&&)` methods. -[h2 Boost 1.64.0] +[endsect] + +[section Changes in 1.64.0] + * Initial support for new C++17 member functions: `insert_or_assign` and `try_emplace` in `unordered_map`, * Initial support for `merge` and `extract`. @@ -62,7 +69,9 @@ `unordered_multiset` yet. That will hopefully be in the next version of Boost. -[h2 Boost 1.63.0] +[endsect] + +[section Changes in 1.63.0] * Check hint iterator in `insert`/`emplace_hint`. * Fix some warnings, mostly in the tests. @@ -86,7 +95,9 @@ arguments, but an off by one error in the preprocessor code meant it only supported up to 9. -[h2 Boost 1.62.0] +[endsect] + +[section Changes in 1.62.0] * Remove use of deprecated `boost::iterator`. * Remove `BOOST_NO_STD_DISTANCE` workaround. @@ -96,7 +107,9 @@ * Stop using return value SFINAE which some older compilers have issues with. -[h2 Boost 1.58.0] +[endsect] + +[section Changes in 1.58.0] * Remove unnecessary template parameter from const iterators. * Rename private `iterator` typedef in some iterator classes, as it @@ -107,13 +120,17 @@ * Fix potential overflow when calculating number of buckets to allocate ([@https://github.com/boostorg/unordered/pull/4 GitHub #4]). -[h2 Boost 1.57.0] +[endsect] + +[section Changes in 1.57.0] * Fix the `pointer` typedef in iterators ([ticket 10672]). * Fix Coverity warning ([@https://github.com/boostorg/unordered/pull/2 GitHub #2]). -[h2 Boost 1.56.0] +[endsect] + +[section Changes in 1.56.0] * Fix some shadowed variable warnings ([ticket 9377]). * Fix allocator use in documentation ([ticket 9719]). @@ -122,7 +139,9 @@ uses slower ([ticket 9282]). * Only construct elements using allocators, as specified in C++11 standard. -[h2 Boost 1.55.0] +[endsect] + +[section Changes in 1.55.0] * Avoid some warnings ([ticket 8851], [ticket 8874]). * Avoid exposing some detail functions via. ADL on the iterators. @@ -130,14 +149,18 @@ methods to construct and destroy stored elements. Don't use them for internal data like pointers. -[h2 Boost 1.54.0] +[endsect] + +[section Changes in 1.54.0] * Mark methods specified in standard as `noexpect`. More to come in the next release. * If the hash function and equality predicate are known to both have nothrow move assignment or construction then use them. -[h2 Boost 1.53.0] +[endsect] + +[section Changes in 1.53.0] * Remove support for the old pre-standard variadic pair constructors, and equality implementation. Both have been deprecated since Boost 1.48. @@ -145,7 +168,9 @@ * More internal implementation changes, including a much simpler implementation of `erase`. -[h2 Boost 1.52.0] +[endsect] + +[section Changes in 1.52.0] * Faster assign, which assigns to existing nodes where possible, rather than creating entirely new nodes and copy constructing. @@ -155,7 +180,9 @@ for C++11 allocators. * Simplified the implementation a bit. Hopefully more robust. -[h2 Boost 1.51.0] +[endsect] + +[section Changes in 1.51.0] * Fix construction/destruction issue when using a C++11 compiler with a C++03 allocator ([ticket 7100]). @@ -163,7 +190,9 @@ * Adjust SFINAE use to try to support g++ 3.4 ([ticket 7175]). * Updated to use the new config macros. -[h2 Boost 1.50.0] +[endsect] + +[section Changes in 1.50.0] * Fix equality for `unordered_multiset` and `unordered_multimap`. * [@https://svn.boost.org/trac/boost/ticket/6857 Ticket 6857]: @@ -187,12 +216,16 @@ for 64 bit values. * Some internal changes. -[h2 Boost 1.49.0] +[endsect] + +[section Changes in 1.49.0] * Fix warning due to accidental odd assignment. * Slightly better error messages. -[h2 Boost 1.48.0 - Major update] +[endsect] + +[section Changes in 1.48.0 - Major update] This is major change which has been converted to use Boost.Move's move emulation, and be more compliant with the C++11 standard. See the @@ -228,12 +261,16 @@ C++11 support has resulted in some breaking changes: the variadic constructors define `BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT`. -[h2 Boost 1.45.0] +[endsect] + +[section Changes in 1.45.0] * Fix a bug when inserting into an `unordered_map` or `unordered_set` using iterators which returns `value_type` by copy. -[h2 Boost 1.43.0] +[endsect] + +[section Changes in 1.43.0] * [@http://svn.boost.org/trac/boost/ticket/3966 Ticket 3966]: `erase_return_void` is now `quick_erase`, which is the @@ -245,7 +282,9 @@ C++11 support has resulted in some breaking changes: * Use Boost.Exception. * Stop using deprecated `BOOST_HAS_*` macros. -[h2 Boost 1.42.0] +[endsect] + +[section Changes in 1.42.0] * Support instantiating the containers with incomplete value types. * Reduced the number of warnings (mostly in tests). @@ -259,7 +298,9 @@ C++11 support has resulted in some breaking changes: Add missing `std` qualifier to `ptrdiff_t`. * Some code formatting changes to fit almost all lines into 80 characters. -[h2 Boost 1.41.0 - Major update] +[endsect] + +[section Changes in 1.41.0 - Major update] * The original version made heavy use of macros to sidestep some of the older compilers' poor template support. But since I no longer support those @@ -274,7 +315,9 @@ C++11 support has resulted in some breaking changes: * Buckets are allocated lazily which means that constructing an empty container will not allocate any memory. -[h2 Boost 1.40.0] +[endsect] + +[section Changes in 1.40.0] * [@https://svn.boost.org/trac/boost/ticket/2975 Ticket 2975]: Store the prime list as a preprocessor sequence - so that it will always get @@ -290,7 +333,9 @@ C++11 support has resulted in some breaking changes: * Better configuration for C++0x features when the headers aren't available. * Create less buckets by default. -[h2 Boost 1.39.0] +[endsect] + +[section Changes in 1.39.0] * [@https://svn.boost.org/trac/boost/ticket/2756 Ticket 2756]: Avoid a warning on Visual C++ 2009. @@ -300,7 +345,9 @@ C++11 support has resulted in some breaking changes: * [@https://svn.boost.org/trac/boost/ticket/2975 Ticket 2975]: Fix length of prime number list. -[h2 Boost 1.38.0] +[endsect] + +[section Changes in 1.38.0] * Use [@boost:/libs/core/swap.html `boost::swap`]. * [@https://svn.boost.org/trac/boost/ticket/2237 Ticket 2237]: @@ -320,7 +367,9 @@ C++11 support has resulted in some breaking changes: * Add support for C++0x initializer lists where they're available (currently only g++ 4.4 in C++0x mode). -[h2 Boost 1.37.0] +[endsect] + +[section Changes in 1.37.0] * Rename overload of `emplace` with hint, to `emplace_hint` as specified in [@http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2691.pdf n2691]. @@ -329,7 +378,9 @@ C++11 support has resulted in some breaking changes: * Move all the implementation inside `boost/unordered`, to assist modularization and hopefully make it easier to track changes in subversion. -[h2 Boost 1.36.0] +[endsect] + +[section Changes in 1.36.0] First official release. @@ -341,7 +392,9 @@ First official release. are available. * Added equality operators. -[h2 1.35.0 Add-on - 31st March 2008] +[endsect] + +[section 1.35.0 Add-on - 31st March 2008] Unofficial release uploaded to vault, to be used with Boost 1.35.0. Incorporated many of the suggestions from the review. @@ -352,9 +405,13 @@ many of the suggestions from the review. the max load factor, and use `double` in the calculation for greater accuracy. * Fix some errors in the examples. -[h2 Review Version] +[endsect] + +[section Review Version] Initial review version, for the review conducted from 7th December 2007 to 16th December 2007. [endsect] + +[endsect] From 6c74aa02892d2dffd02c259088412c2ed47bb1f6 Mon Sep 17 00:00:00 2001 From: Christian Mazakas Date: Wed, 5 Jan 2022 14:46:55 -0800 Subject: [PATCH 3/9] Add changelist for 1.79.0 release --- doc/changes.qbk | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/doc/changes.qbk b/doc/changes.qbk index 14f5c6b0..19310d63 100644 --- a/doc/changes.qbk +++ b/doc/changes.qbk @@ -10,6 +10,21 @@ [section:changes Change Log] +[section Changes in 1.79.0] + +* Improved C++20 support: + * All containers have been updated to support + heterogeneous `count`, `equal_range` and `find`. +* Improved C++23 support: + * All containers have been updated to support + heterogeneous `erase` and `extract`. +* Changed behavior of `reserve` to eagerly + allocate ([@https://github.com/boostorg/unordered/pull/59 PR#59]). +* Various warning fixes in the test suite. +* Update code to internally use `boost::allocator_traits`. + +[endsect] + [section Changes in 1.67.0] * Improved C++17 support: From cd56cae0326c8b53a22ab1a437e0e37d20045813 Mon Sep 17 00:00:00 2001 From: Christian Mazakas Date: Thu, 6 Jan 2022 15:27:18 -0800 Subject: [PATCH 4/9] Update reference docs for `find()` to include heterogeneous overloads --- doc/ref.php | 46 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/doc/ref.php b/doc/ref.php index 35df3f49..b3a69d75 100644 --- a/doc/ref.php +++ b/doc/ref.php @@ -1272,6 +1272,24 @@ EOL; const_iterator + + + + K const& + + iterator + + + + + K const& + + const_iterator +