...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost/container/vector.hpp
preprocessed file size reduces
from 1,5MB to 930KB. If you still want to use standard exception classes,
you can define BOOST_CONTAINER_USE_STD_EXCEPTIONS
before using any Boost.Container class.
pmr::map
with a std::pair
; works when using a std::tuple
".
devector
container.
equal_range
can result in a range
with length greater than 1".
deque
can now have
options, using deque_options
.
The block size/bytes can be be specified.
static_vector
can now have options, using static_vector_options
.
Alignment and throwing behaviour can be be specified.
small_vector
can now have options, using small_vector_options
.
Alignment and growth factor can be be specified.
new_allocator<T>
to void
to reduce symbol lenghts.
contains()
for associative containers as specified
in P0458R2:
Checking for Existence of an Element in Associative Containers.
adaptive_pool
and many parameters are now compile-time constants instead of runtime
constants.
[multi]map/[multi]set/flat_[multi]map/flat_[multi]set
.
unsynchronized_pool_resource
found by Arthur O'Dowyer in his blog post <memory_resource>
for libc++
release()
the original buffer is recovered for the next allocation.
vector_options
.
The growth factor and the stored size type can be specified.
extract_sequence
,
adopt_sequence
functions
for flat_[multi]map/set associative containers.
static_vector<>::static_capacity
to use the configured capacity in constant expressions.
insert_or_assign
/try_emplace
for map
and flat_map
.
map
,
multimap
, set
, multiset
.
deque
,
vector
, stable_vector
, small_vector
,
static_vector
, list
and slist
.
boost::container::small_vector
supports more constructors and assignments.
pop_back
, pop_front
, back
,
front
, etc.)
back
/front
operations to basic_string
.
small_vector
container.
nth
and index_of
functions to containers with
random-access iterators (except basic_string
).
allocator_traits<Allocator>::is_always_equal
.
scoped_allocator_adaptor
's
propagate_on_container_copy_assignment
,
propagate_on_container_move_assignment
and propagate_on_container_swap
are no longer ::boost::integral_constant<bool, true/false>
types. The dependency reorganization
needed to break with those classes to avoid MPL dependencies, and interoperability
with std::integral_constant
was not guaranteed.
Code assumming boost::true_type/boost::false_type
on this will not compile. As a workaround, use the guaranteed internal
::value
constant: ::boost::integral_constant<bool, scoped_allocator_adaptor<Allocator>::propagate_on_container_move_assignment::value>
.
initializer_list
.
Contributed by Robert Matusewicz.
set
, multiset
,
map
and multimap
.
static_vector
class, based on Andrew Hundt's and Adam Wulkiewicz's high performance
varray
class.
vector
constructors/copy/move/swap, dispatching to memcpy when possible.
BOOST_NO_EXCEPTIONS
#7227.
vector
's insertion
performance.
stable_vector
's
template code bloat and type safety.