Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for a snapshot of the develop branch, built from commit ef09292332.

Release Notes

Boost 1.85 Release
Boost 1.82 Release
Boost 1.81 Release
Boost 1.80 Release
Boost 1.79 Release
Boost 1.77 Release
Boost 1.76 Release
Boost 1.75 Release
Boost 1.73 Release
Boost 1.71 Release
Boost 1.70 Release
Boost 1.67 Release
Boost 1.65 Release
Boost 1.64 Release
Boost 1.63 Release
Boost 1.62 Release
Boost 1.61 Release
Boost 1.60 Release
Boost 1.59 Release
Boost 1.58 Release
Boost 1.57 Release
Boost 1.56 Release
Boost 1.55 Release
Boost 1.54 Release
Boost 1.53 Release
Boost 1.51 Release
Boost 1.49 Release
Boost 1.48 Release
Boost 1.46 Release
Boost 1.45 Release
Boost 1.40 Release
Boost 1.39 Release
Boost 1.38 Release
Boost 1.37 Release
Boost 1.36 Release
  • Fixed bugs:
  • Potentially breaking: Unordered containers use now by default an internal a boost::hash-protocol compatible internal hash functor.
    • Reasons:
      • Since Boost 1.84 Boost.ContainerHash requires C++11, breaking Boost.Intrusive C++03 users.
      • To avoid header inclusion dependency on Boost.ContainerHash, which indirectly also brings other libraries (Boost.Describe, Boost.Mp11...).
    • The new default hash function:
      • Handles scalar types directly (in case scalar types are used with key_of_value) with trivial hashes (similar to boost::hash).
      • For other types (most Boost.Intrusive users are here), uses ADL-based hash_function call, just like boost::hash.
      • If that ADL lookup fails, forward declares boost::hash and calls through an object of that type. If the user has included boost/container_hash/hash.hpp before or after including Boost.Intrusive, boost::hash will be properly called.
    • It's possible that some Boost.Intrusive users were using Boost.ContainerHash functions/features without including the needed boost/container_hash/hash.hpp header, since it was indirectly included through Boost.Intrusive. Those users will need to explicitly include boost/container_hash/hash.hppto obtain Boost.ContainerHash features.
  • Boost.Intrusive no longer depends on Boost.StaticCast.
  • Semi-intrusive hash containers rewritten to reduce compilation times and improve runtime performance.
  • Reduced compile-time dependencies:
    • linear_slist_algorithms use a simple node_ptr instead of std::pair on return.
    • list/slist use operator </operator == instead of std::equal_to/std::less.
  • Fixed bugs:
  • Source breaking: Deprecated xxx_dont_splay functions from splay containers. Deprecated splay_set_base_hook and splay_set_member_hookfrom splay containers, use bs_set_base_hook or bs_set_member_hook instead. Both will be removed in Boost 1.56.
  • ABI breaking: Hash containers' end iterator was implemented pointing to one-past the end of the bucket array (see #8698) causing severe bugs when values to be inserted where allocated next to the bucket array. End iterator implementation was changed to point to the beginning of the bucket array.
  • Big refactoring in order to reduce template and debug symbol bloat. Test object files have been slashed to half in MSVC compilers in Debug mode. Toolchains without Identical COMDAT Folding (ICF) should notice size improvements.
  • Implemented SCARY iterators.
  • Added BOOST_NO_EXCEPTIONS support (bug #7849).
  • Fixed bugs #7174, #7529, #7815.
  • Fixed GCC -Wshadow warnings.
  • Added missing explicit keyword in several intrusive container constructors.
  • Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros.
  • Small documentation fixes.
  • Code cleanup in bstree_algorithms.hpp and avl_tree_algorithms.hpp
  • Fixed bug #3164.
  • New treap-based containers: treap, treap_set, treap_multiset.
  • Corrected compilation bug for Windows-based 64 bit compilers.
  • Corrected exception-safety bugs in container constructors.
  • Updated documentation to show rvalue-references functions instead of emulation functions.
  • Intrusive now takes advantage of compilers with variadic templates.
  • clone_from functions now copy predicates and hash functions of associative containers.
  • Added incremental hashing to unordered containers via incremental<> option.
  • Update some function parameters from iterator to const_iterator in containers to keep up with the draft of the next standard.
  • Added an option to specify include files for intrusive configurable assertion macros.
  • Added linear<> and cache_last<> options to singly linked lists.
  • Added optimize_multikey<> option to unordered container hooks.
  • Optimized unordered containers when store_hash option is used in the hook.
  • Implementation changed to be exception agnostic so that it can be used in environments without exceptions.
  • Added container_from_iterator function to tree-based containers.