Boost C++ Libraries

...one 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 f8e2c77510.
PrevUpHomeNext

Revision History

Changes in 1.86.0
Changes in 1.85.0
Changes in 1.84.0
Changes in 1.83.0
Changes in 1.82.0
Changes in 1.81.0
Changes in 1.80.0
Changes in 1.79.0
Changes in 1.78.0
Changes in 1.77.0
Changes in 1.76.0
Changes in 1.74.0
Changes in 1.71.0
Changes in 1.69.0
Changes in 1.67.0
Changes in 1.65.0
  • Added a boost/core/pointer_in_range.hpp header with a pointer_in_range function template to check if a pointer is within a given range.
  • Fixed type_name for abstract classes. (#172)
  • Fixed boost/core/type_name.hpp compilation error with MSVC with disabled native wchar_t type. (#173)
  • Added a workaround for an MSVC bug causing empty_value compilation errors when it is used with a nested class. (PR#175)
  • Added a new boost/core/functor.hpp header with a functor class template for wrapping a raw function into a function object class.
  • Changed null_deleter, fclose_deleter and checked deleter definitions so that they don't bring namespace boost into argument-dependent lookup in cases like this:

    std::unique_ptr< std::FILE, boost::fclose_deleter > p1, p2;
    swap(p1, p2); // no longer looks for boost::swap as part of ADL
    

    Users may need to either explicitly qualify the namespace of the called function or add a using-declaration.

  • boost::swap utility function has been renamed to boost::core::invoke_swap to avoid forming a potential infinite recursion when the arguments are not swappable. The new function is defined in boost/core/invoke_swap.hpp and is functionally equivalent to boost::swap. The old boost::swap name is preserved for backward compatibility but deprecated and will be removed in a future release. Its noexcept specification has been removed to avoid compile errors caused by compile-time recursion. BOOST_ALLOW_DEPRECATED_SYMBOLS or BOOST_ALLOW_DEPRECATED can be defined to suppress deprecation warnings for the transition period. (#148)
  • Headers boost/swap.hpp, boost/utility/swap.hpp and boost/core/swap.hpp are deprecated and will be removed. Please, switch to boost/core/invoke_swap.hpp. BOOST_ALLOW_DEPRECATED_HEADERS or BOOST_ALLOW_DEPRECATED can be defined to suppress deprecation warnings.
  • Added support for incomplete types to boost::core::type_name.
  • Bit manipulation functions in boost/core/bit.hpp are now constexpr on recent MSVC versions (VS2019 update 5 and later.)
  • Added boost::core::byteswap (an implementation of std::byteswap from C++23) to boost/core/bit.hpp.
  • Moved the yield primitives sp_thread_pause, sp_thread_yield, sp_thread_sleep from SmartPtr implementation details to boost/core/yield_primitives.hpp.
  • Added boost/core/snprintf.hpp header with portable definitions of snprintf, vsnprintf and their wchar_t counterparts.
  • Deprecated boost/core/is_same.hpp and boost::core::is_same. The header will be removed in a future release. Users are advised to use Boost.TypeTraits or C++ standard library type traits instead.
  • Marked boost::ref member functions and associated methods with noexcept.
  • Marked boost::swap function with noexcept, depending on whether the type supports a non-throwing swap operation.
  • Added boost::core::launder, a portable implementation of std::launder.
  • Added BOOST_CORE_ALIGNOF, a portable implementation of alignof.
  • Added boost::core::max_align_t, a portable equivalent of std::max_align_t, and boost::core::max_align, the alignment of max_align_t.
  • Added boost::core::memory_resource, a portable equivalent of std::pmr::memory_resource from C++17.
  • Added boost/core/serialization.hpp, a collection of primitives allowing libraries to implement Boost.Serialization support for their types without including a Serialization header and thereby making their libraries depend on Serialization.
  • Added boost::data, an implementation of std::data.
  • Added boost::size, an implementation of std::size.
  • Updated boost::span to use boost::data which adds support for range construction from an std::initializer_list.
  • Added boost::identity, an implementation of std::identity. This facility has been moved from Boost.Functional.
  • empty_value members are now marked as constexpr.
  • Added fclose_deleter, a deleter that calls std::fclose on a pointer to std::FILE.
  • Bit manipulation utilities in boost/core/bit.hpp now explicitly require unsigned integers on input. (#129)
  • bit_width now returns int instead of a value of the input argument type. This follows the resolution of LWG3656.
  • In boost/core/allocator_access.hpp, added detection of construct and destroy members of an allocator.
  • boost/core/alloc_construct.hpp header is now deprecated and will be removed in a future release. Its functionality was moved to boost/core/allocator_access.hpp. In particular, new methods allocator_construct_n and allocator_destroy_n were added for allocating and destroying arrays.
  • Worked around MSVC bug that failed to compile span in C++17 mode when Boost.Range headers were included. (#105, PR#115)
  • Added support for 128-bit integer types in type_name.
  • In pointer_traits, pointer rebinding now supports C++03 compilers.
  • Added boost::allocator_traits, an implementation of std::allocator_traits.
  • Made boost::pointer_traits SFINAE friendly.
  • boost/iterator.hpp is deprecated and will be removed in a future release. The header defines the boost::iterator template, which is equivalent to std::iterator in the <iterator> header. However, since std::iterator is itself deprecated in C++17, users are advised to remove the use of boost::iterator or std::iterator from their code.
  • Added boost::core::verbose_terminate_handler, a utility function intended to be passed to std::set_terminate that prints information about the uncaught exception to stderr.
  • Added a generic implementation to boost/core/cmath.hpp, enabled when BOOST_CORE_USE_GENERIC_CMATH is defined or when the platform does not provide the necessary facilities in <cmath>.
  • Added boost::core::type_name, a utility function that returns the name of a type as a string.
  • Added boost::span, a C++11 implementation of C++20's std::span.
  • boost/core/uncaught_exceptions.hpp has been modified for compatibility with Mac OS 10.4 and older.
  • Added implicit conversion between compatible reference wrappers.
  • Added boost/core/cmath.hpp, a portable implementation of the floating point classification functions from <cmath>.
  • Added boost/core/bit.hpp, a portable implementation of the C++20 standard header <bit>.
  • Fixed BOOST_TEST_EQ, BOOST_TEST_NE for character types under C++20.
  • Revised allocator access utilities (now support VS2013, and no workarounds use allocator_traits.)
  • Implemented the allocator access utilities which provide a replacement for allocator_traits with individual traits and functions for each facility. They support the C++11 allocator model when possible and provide a fallback for C++98 compatibility.
  • Added BOOST_TEST_WITH to Lightweight Test.
  • Added functions alloc_construct, alloc_construct_n, alloc_destroy, and alloc_destroy_n in <boost/core/alloc_construct.hpp> for allocator aware and exception safe construction and destruction of objects and arrays.
  • Added constexpr functions first_scalar in <boost/core/first_scalar.hpp> for obtaining a pointer to the first scalar element of an array. Given a pointer of type T* they return a pointer of type remove_all_extents_t<T>*.
  • Added class template noinit_adaptor in <boost/core/noinit_adaptor.hpp> which is an allocator adaptor that converts any allocator into one whose construct(ptr) performs default initialization via placement new, and whose destroy(ptr) invokes the value_type destructor directly.
  • Added class template default_allocator in <boost/core/default_allocator.hpp>, which can serve as a minimal default allocator that has interface similar to C++20 std::allocator, supports configurations with disabled exceptions and does not have std as an associated namespace. The allocator uses operator new and operator delete for allocation.
  • In <boost/core/uncaught_exceptions.hpp> header, added workarounds for better compatibility with QNX SDP 7.0 when libc++/libc++abi libraries are used.
  • The <boost/detail/sp_typeinfo.hpp> header is now marked as deprecated and will be removed in a future release. <boost/core/typeinfo.hpp> should be used instead.
  • Implemented boost::empty_value, for library authors to conveniently leverage the Empty Base Optimization to store objects of potentially empty types.
  • Implemented boost::quick_exit to provide the C++11 standard library facility std::quick_exit functionality.
  • Reduced the number of statics in Lightweight Test, and employ lighter abort behavior for MSVC compilers upon failure to call boost::report_errors.
  • Updated to_address and pointer_traits to reflect the design adopted for C++20 in P0653R2.
  • Implemented pointer_traits for C++03 and higher, that implements P0653r0.
  • Added BOOST_TEST_GT and BOOST_TEST_GE to Lightweight Test.

PrevUpHomeNext