| 
									
										
										
										
											2008-05-11 12:09:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | [/ Copyright 2008 Daniel James. | 
					
						
							|  |  |  |  / Distributed under the Boost Software License, Version 1.0. (See accompanying | 
					
						
							|  |  |  |  / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-07 08:19:01 +00:00
										 |  |  | [template ticket[number]'''<ulink | 
					
						
							|  |  |  |     url="https://svn.boost.org/trac/boost/ticket/'''[number]'''">'''#[number]'''</ulink>'''] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-11 12:09:07 +00:00
										 |  |  | [section:changes Change Log] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [h2 Review Version] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Initial review version, for the review conducted from 7th December 2007 to | 
					
						
							|  |  |  | 16th December 2007. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-25 21:25:58 +00:00
										 |  |  | [h2 1.35.0 Add-on - 31st March 2008] | 
					
						
							| 
									
										
										
										
											2008-05-11 12:09:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Unofficial release uploaded to vault, to be used with Boost 1.35.0. Incorporated | 
					
						
							|  |  |  | many of the suggestions from the review. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * 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.36.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | First official release. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * 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. | 
					
						
							| 
									
										
										
										
											2008-07-17 23:08:32 +00:00
										 |  |  | * Added equality operators. | 
					
						
							| 
									
										
										
										
											2008-05-11 12:09:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-09-18 11:23:12 +00:00
										 |  |  | [h2 Boost 1.37.0] | 
					
						
							| 
									
										
										
										
											2008-08-11 07:52:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | * 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]. | 
					
						
							| 
									
										
										
										
											2008-09-18 11:23:12 +00:00
										 |  |  | * Provide forwarding headers at `<boost/unordered/unordered_map_fwd.hpp>` and | 
					
						
							|  |  |  |   `<boost/unordered/unordered_set_fwd.hpp>`. | 
					
						
							|  |  |  | * Move all the implementation inside `boost/unordered`, to assist | 
					
						
							|  |  |  |   modularization and hopefully make it easier to track changes in subversion. | 
					
						
							| 
									
										
										
										
											2008-08-11 07:52:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-15 13:07:29 +00:00
										 |  |  | [h2 Boost 1.38.0] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-16 22:45:04 +01:00
										 |  |  | * Use [@boost:/libs/core/swap.html `boost::swap`]. | 
					
						
							| 
									
										
										
										
											2008-11-24 22:55:47 +00:00
										 |  |  | * [@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. | 
					
						
							| 
									
										
										
										
											2008-11-24 22:56:04 +00:00
										 |  |  | * [@https://svn.boost.org/trac/boost/ticket/1710 Ticket 1710]:  | 
					
						
							|  |  |  |   Use a larger prime number list. Thanks to Thorsten Ottosen and Hervé | 
					
						
							|  |  |  |   Brönnimann. | 
					
						
							| 
									
										
										
										
											2008-11-24 23:15:55 +00:00
										 |  |  | * Use | 
					
						
							| 
									
										
										
										
											2009-02-15 19:32:04 +00:00
										 |  |  |   [@boost:/libs/type_traits/doc/html/boost_typetraits/category/alignment.html | 
					
						
							| 
									
										
										
										
											2008-11-24 23:15:55 +00:00
										 |  |  |   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. | 
					
						
							| 
									
										
										
										
											2008-12-04 21:30:19 +00:00
										 |  |  | * Add support for C++0x initializer lists where they're available (currently | 
					
						
							|  |  |  |   only g++ 4.4 in C++0x mode). | 
					
						
							| 
									
										
										
										
											2008-11-15 13:07:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-31 19:43:58 +00:00
										 |  |  | [h2 Boost 1.39.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * [@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. | 
					
						
							| 
									
										
										
										
											2009-04-12 10:50:57 +00:00
										 |  |  | * Avoid an unnecessary copy in `operator[]`. | 
					
						
							| 
									
										
										
										
											2009-05-25 19:45:06 +00:00
										 |  |  | * [@https://svn.boost.org/trac/boost/ticket/2975 Ticket 2975]: Fix length of | 
					
						
							|  |  |  |   prime number list. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [h2 Boost 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 | 
					
						
							|  |  |  |   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. | 
					
						
							| 
									
										
										
										
											2009-07-26 18:59:33 +00:00
										 |  |  | * [@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. | 
					
						
							| 
									
										
										
										
											2009-05-27 17:42:01 +00:00
										 |  |  | * Better configuration for C++0x features when the headers aren't available. | 
					
						
							| 
									
										
										
										
											2009-07-26 18:59:33 +00:00
										 |  |  | * Create less buckets by default. | 
					
						
							| 
									
										
										
										
											2009-03-31 19:43:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-18 20:18:28 +00:00
										 |  |  | [h2 Boost 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 | 
					
						
							|  |  |  |   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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-12 07:52:12 +01:00
										 |  |  | * The container object is now smaller thanks to using `boost::compressed_pair` | 
					
						
							| 
									
										
										
										
											2009-10-18 20:18:28 +00:00
										 |  |  |   for EBO and a slightly different function buffer - now using a bool instead | 
					
						
							|  |  |  |   of a member pointer. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Buckets are allocated lazily which means that constructing an empty container | 
					
						
							|  |  |  |   will not allocate any memory. | 
					
						
							| 
									
										
										
										
											2009-11-28 11:46:24 +00:00
										 |  |  |    | 
					
						
							|  |  |  | [h2 Boost 1.42.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Support instantiating the containers with incomplete value types. | 
					
						
							|  |  |  | * Reduced the number of warnings (mostly in tests). | 
					
						
							| 
									
										
										
										
											2009-12-15 22:53:54 +00:00
										 |  |  | * Improved codegear compatibility. | 
					
						
							| 
									
										
										
										
											2009-12-15 22:52:52 +00:00
										 |  |  | * [@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. | 
					
						
							| 
									
										
										
										
											2009-12-15 22:53:33 +00:00
										 |  |  | * Add templated find overload for compatible keys. | 
					
						
							| 
									
										
										
										
											2009-12-15 22:42:04 +00:00
										 |  |  | * [@http://svn.boost.org/trac/boost/ticket/3773 Ticket 3773]: | 
					
						
							|  |  |  |   Add missing `std` qualifier to `ptrdiff_t`. | 
					
						
							| 
									
										
										
										
											2010-01-08 06:43:57 +00:00
										 |  |  | * Some code formatting changes to fit almost all lines into 80 characters. | 
					
						
							| 
									
										
										
										
											2009-10-18 20:18:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-22 00:42:07 +00:00
										 |  |  | [h2 Boost 1.43.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * [@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. | 
					
						
							| 
									
										
										
										
											2010-04-18 13:20:45 +00:00
										 |  |  | * Use Boost.Exception. | 
					
						
							|  |  |  | * Stop using deprecated `BOOST_HAS_*` macros. | 
					
						
							| 
									
										
										
										
											2010-03-22 00:42:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-21 20:23:37 +00:00
										 |  |  | [h2 Boost 1.45.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Fix a bug when inserting into an `unordered_map` or `unordered_set` using | 
					
						
							|  |  |  |   iterators which returns `value_type` by copy. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-16 10:31:25 +00:00
										 |  |  | [h2 Boost 1.48.0 - Major update] | 
					
						
							| 
									
										
										
										
											2011-08-03 08:34:33 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-16 22:18:09 +00:00
										 |  |  | This is major change which has been converted to use Boost.Move's move | 
					
						
							| 
									
										
										
										
											2011-10-16 10:31:25 +00:00
										 |  |  | emulation, and be more compliant with the C++11 standard. See the | 
					
						
							|  |  |  | [link unordered.compliance compliance section] for details. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The container now meets C++11's complexity requirements, but to do so | 
					
						
							|  |  |  | uses a little more memory. This means that `quick_erase` and | 
					
						
							|  |  |  | `erase_return_void` are no longer required, they'll be removed in a | 
					
						
							|  |  |  | future version. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | C++11 support has resulted in some breaking changes: | 
					
						
							| 
									
										
										
										
											2011-08-16 22:18:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | * Equality comparison has been changed to the C++11 specification. | 
					
						
							|  |  |  |   In a container with equivalent keys, elements in a group with equal | 
					
						
							|  |  |  |   keys used to have to be in the same order to be considered equal, | 
					
						
							| 
									
										
										
										
											2011-10-16 10:31:25 +00:00
										 |  |  |   now they can be a permutation of each other. To use the old | 
					
						
							| 
									
										
										
										
											2011-09-14 21:05:13 +00:00
										 |  |  |   behavior define the macro `BOOST_UNORDERED_DEPRECATED_EQUALITY`. | 
					
						
							| 
									
										
										
										
											2011-08-16 22:18:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | * The behaviour of swap is different when the two containers to be | 
					
						
							|  |  |  |   swapped has unequal allocators. It used to allocate new nodes using | 
					
						
							|  |  |  |   the appropriate allocators, it now swaps the allocators if | 
					
						
							|  |  |  |   the allocator has a member structure `propagate_on_container_swap`, | 
					
						
							|  |  |  |   such that `propagate_on_container_swap::value` is true. | 
					
						
							| 
									
										
										
										
											2011-08-03 08:34:33 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-29 15:22:00 +00:00
										 |  |  | * Allocator's `construct` and `destroy` functions are called with raw | 
					
						
							|  |  |  |   pointers, rather than the allocator's `pointer` type. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-14 21:06:38 +00:00
										 |  |  | * `emplace` used to emulate the variadic pair constructors that | 
					
						
							|  |  |  |   appeared in early C++0x drafts. Since they were removed it no | 
					
						
							|  |  |  |   longer does so. It does emulate the new `piecewise_construct` | 
					
						
							|  |  |  |   pair constructors - only you need to use | 
					
						
							|  |  |  |   `boost::piecewise_construct`. To use the old emulation of | 
					
						
							| 
									
										
										
										
											2017-04-12 07:52:12 +01:00
										 |  |  |   the variadic constructors define | 
					
						
							| 
									
										
										
										
											2011-09-14 21:06:38 +00:00
										 |  |  |   `BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT`. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-11 21:36:26 +00:00
										 |  |  | [h2 Boost 1.49.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Fix warning due to accidental odd assignment. | 
					
						
							|  |  |  | * Slightly better error messages. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-03 21:35:51 +00:00
										 |  |  | [h2 Boost 1.50.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Fix equality for `unordered_multiset` and `unordered_multimap`. | 
					
						
							| 
									
										
										
										
											2012-05-07 10:58:32 +00:00
										 |  |  | * [@https://svn.boost.org/trac/boost/ticket/6857 Ticket 6857]: | 
					
						
							|  |  |  |   Implement `reserve`. | 
					
						
							| 
									
										
										
										
											2012-05-07 10:57:35 +00:00
										 |  |  | * [@https://svn.boost.org/trac/boost/ticket/6771 Ticket 6771]: | 
					
						
							| 
									
										
										
										
											2012-05-03 21:35:51 +00:00
										 |  |  |   Avoid gcc's `-Wfloat-equal` warning. | 
					
						
							| 
									
										
										
										
											2012-05-07 10:57:35 +00:00
										 |  |  | * [@https://svn.boost.org/trac/boost/ticket/6784 Ticket 6784]: | 
					
						
							| 
									
										
										
										
											2012-05-03 21:35:51 +00:00
										 |  |  |   Fix some Sun specific code. | 
					
						
							| 
									
										
										
										
											2012-05-07 10:57:35 +00:00
										 |  |  | * [@https://svn.boost.org/trac/boost/ticket/6190 Ticket 6190]: | 
					
						
							|  |  |  |   Avoid gcc's `-Wshadow` warning. | 
					
						
							| 
									
										
										
										
											2012-05-17 06:20:55 +00:00
										 |  |  | * [@https://svn.boost.org/trac/boost/ticket/6905 Ticket 6905]: | 
					
						
							|  |  |  |   Make namespaces in macros compatible with `bcp` custom namespaces. | 
					
						
							|  |  |  |   Fixed by Luke Elliott. | 
					
						
							| 
									
										
										
										
											2012-05-03 21:35:51 +00:00
										 |  |  | * 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-09-30 11:55:58 +00:00
										 |  |  | [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. | 
					
						
							| 
									
										
										
										
											2017-04-12 07:52:12 +01:00
										 |  |  | * Adjust SFINAE use to try to support g++ 3.4 ([ticket 7175]). | 
					
						
							| 
									
										
										
										
											2012-09-30 11:55:58 +00:00
										 |  |  | * Updated to use the new config macros. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [h2 Boost 1.52.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Faster assign, which assigns to existing nodes where possible, rather than | 
					
						
							|  |  |  |   creating entirely new nodes and copy constructing. | 
					
						
							| 
									
										
										
										
											2012-10-07 08:19:01 +00:00
										 |  |  | * Fixed bug in `erase_range` ([ticket 7471]). | 
					
						
							| 
									
										
										
										
											2012-09-30 11:55:58 +00:00
										 |  |  | * 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-17 10:28:35 +00:00
										 |  |  | [h2 Boost 1.53.0] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-17 10:30:19 +00:00
										 |  |  | * Remove support for the old pre-standard variadic pair constructors, and | 
					
						
							|  |  |  |   equality implementation. Both have been deprecated since Boost 1.48. | 
					
						
							| 
									
										
										
										
											2012-11-22 08:59:27 +00:00
										 |  |  | * Remove use of deprecated config macros. | 
					
						
							|  |  |  | * More internal implementation changes, including a much simpler | 
					
						
							|  |  |  |   implementation of `erase`. | 
					
						
							| 
									
										
										
										
											2012-11-17 10:28:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-25 15:45:51 +00:00
										 |  |  | [h2 Boost 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-06 08:03:12 +00:00
										 |  |  | [h2 Boost 1.55.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Avoid some warnings ([ticket 8851], [ticket 8874]). | 
					
						
							|  |  |  | * Avoid exposing some detail functions via. ADL on the iterators. | 
					
						
							| 
									
										
										
										
											2014-07-12 19:12:46 +01:00
										 |  |  | * 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. | 
					
						
							| 
									
										
										
										
											2013-10-06 08:03:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-27 12:20:56 +01:00
										 |  |  | [h2 Boost 1.56.0] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-27 18:01:00 +01:00
										 |  |  | * 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. | 
					
						
							| 
									
										
										
										
											2014-07-27 12:20:56 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-26 12:17:58 +00:00
										 |  |  | [h2 Boost 1.57.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Fix the `pointer` typedef in iterators ([ticket 10672]). | 
					
						
							|  |  |  | * Fix Coverity warning | 
					
						
							|  |  |  |   ([@https://github.com/boostorg/unordered/pull/2 GitHub #2]). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-08 22:22:12 +00:00
										 |  |  | [h2 Boost 1.58.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Remove unnecessary template parameter from const iterators. | 
					
						
							|  |  |  | * Rename private `iterator` typedef in some iterator classes, as it | 
					
						
							|  |  |  |   confuses some traits classes. | 
					
						
							| 
									
										
										
										
											2014-11-09 23:34:52 +00:00
										 |  |  | * Fix move assignment with stateful, propagate_on_container_move_assign | 
					
						
							|  |  |  |   allocators ([ticket 10777]). | 
					
						
							| 
									
										
										
										
											2014-11-09 23:36:10 +00:00
										 |  |  | * Fix rare exception safety issue in move assignment. | 
					
						
							| 
									
										
										
										
											2015-02-22 15:08:46 +00:00
										 |  |  | * Fix potential overflow when calculating number of buckets to allocate | 
					
						
							|  |  |  |   ([@https://github.com/boostorg/unordered/pull/4 GitHub #4]). | 
					
						
							| 
									
										
										
										
											2014-11-08 22:22:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-26 09:23:01 +01:00
										 |  |  | [h2 Boost 1.62.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Remove use of deprecated `boost::iterator`. | 
					
						
							| 
									
										
										
										
											2016-05-26 09:23:01 +01:00
										 |  |  | * Remove `BOOST_NO_STD_DISTANCE` workaround. | 
					
						
							| 
									
										
										
										
											2016-05-26 09:23:01 +01:00
										 |  |  | * Remove `BOOST_UNORDERED_DEPRECATED_EQUALITY` warning. | 
					
						
							| 
									
										
										
										
											2016-05-30 11:29:20 +01:00
										 |  |  | * Simpler implementation of assignment, fixes an exception safety issue | 
					
						
							|  |  |  |   for `unordered_multiset` and `unordered_multimap`. Might be a little slower. | 
					
						
							| 
									
										
										
										
											2016-06-02 23:52:23 +01:00
										 |  |  | * Stop using return value SFINAE which some older compilers have issues | 
					
						
							|  |  |  |   with. | 
					
						
							| 
									
										
										
										
											2016-08-19 12:37:57 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | [h2 Boost 1.63.0] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 12:08:15 +01:00
										 |  |  | * Check hint iterator in `insert`/`emplace_hint`. | 
					
						
							| 
									
										
										
										
											2016-10-02 13:04:25 +01:00
										 |  |  | * 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. | 
					
						
							| 
									
										
										
										
											2016-10-14 09:29:38 +01:00
										 |  |  | * Better allocator support ([ticket 12459]). | 
					
						
							| 
									
										
										
										
											2016-10-23 13:31:07 +01:00
										 |  |  | * Make the no argument constructors implicit. | 
					
						
							| 
									
										
										
										
											2016-10-23 13:31:07 +01:00
										 |  |  | * Implement missing allocator aware constructors. | 
					
						
							| 
									
										
										
										
											2016-12-05 22:48:00 +00:00
										 |  |  | * 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 | 
					
						
							| 
									
										
										
										
											2017-03-15 11:15:27 +00:00
										 |  |  |   supported up to 9. | 
					
						
							| 
									
										
										
										
											2016-05-26 09:23:01 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-15 11:16:53 +00:00
										 |  |  | [h2 Boost 1.64.0] | 
					
						
							|  |  |  | * Initial support for new C++17 member functions: | 
					
						
							|  |  |  |   `insert_or_assign` and `try_emplace` in `unordered_map`, | 
					
						
							| 
									
										
										
										
											2017-04-11 23:40:13 +01:00
										 |  |  | * Initial support for `merge` and `extract`. | 
					
						
							| 
									
										
										
										
											2017-04-12 07:52:12 +01:00
										 |  |  |   Does not include transferring nodes between | 
					
						
							| 
									
										
										
										
											2017-04-11 23:40:13 +01:00
										 |  |  |   `unordered_map` and `unordered_multimap` or between `unordered_set` and | 
					
						
							|  |  |  |   `unordered_multiset` yet. That will hopefully be in the next version of | 
					
						
							|  |  |  |   Boost. | 
					
						
							| 
									
										
										
										
											2017-03-15 11:16:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-15 17:35:09 +01:00
										 |  |  | [h2 Boost 1.65.0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Add deprecated attributes to `quick_erase` and `erase_return_void`. | 
					
						
							| 
									
										
										
										
											2017-04-15 20:52:00 +01:00
										 |  |  |   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. | 
					
						
							| 
									
										
										
										
											2017-04-15 17:35:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-11 12:09:07 +00:00
										 |  |  | [endsect] |