...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Initial review version, for the review conducted from 7th December 2007 to 16th December 2007.
Unofficial release uploaded to vault, to be used with Boost 1.35.0. Incorporated many of the suggestions from the review.
std::size_t
conversion when calculating sizes from the max load factor, and use double
in the calculation for greater accuracy.
First official release.
emplace
with hint, to emplace_hint
as specified in n2691.
<boost/unordered/unordered_map_fwd.hpp>
and <boost/unordered/unordered_set_fwd.hpp>
.
boost/unordered
,
to assist modularization and hopefully make it easier to track changes
in subversion.
boost::swap
.
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.
operator[]
.
emplace
for all
compilers.
boost::compressed_pair
for EBO and a slightly different function buffer - now using a bool instead
of a member pointer.
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.
std
qualifier
to ptrdiff_t
.
erase_return_void
is now
quick_erase
, which is the
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.
BOOST_HAS_*
macros.
unordered_map
or unordered_set
using
iterators which returns value_type
by copy.
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 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:
BOOST_UNORDERED_DEPRECATED_EQUALITY
.
propagate_on_container_swap
,
such that propagate_on_container_swap::value
is true.
construct
and
destroy
functions are called
with raw pointers, rather than the allocator's pointer
type.
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 the variadic consturctors define BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT
.
unordered_multiset
and unordered_multimap
.
reserve
.
-Wfloat-equal
warning.
-Wshadow
warning.
bcp
custom namespaces. Fixed by Luke Elliott.
allocator_traits
, as
it's more likely to work.