| Home | Libraries | People | FAQ | More

## Revision History

### Changes in 1.91.0

- The header `boost/is_placeholder.hpp` has been moved from Bind to Core. (#90)

### Changes in 1.90.0

- The implementation of `BOOST_TEST_THROWS` and `BOOST_TEST_NO_THROW` macros defined in `boost/core/lightweight_test.hpp` has been changed to avoid compiler warnings on some compilers, when the macros are used in `if`/`else` blocks. As a side effect of this change, the semicolon after the macro is now necessary. (PR#205)
- `boost::data` and `boost::size` are now aliases for `std::data` and `std::size`, respectively, when the latter are provided by compiler. This resolves potential ambiguities when both `boost::` and `std::` alternatives are found by the compiler, e.g. as a result of ADL. (#206)

### Changes in 1.89.0

- Fixed `bit_ceil` to return 1 for input 0 as per specification. (PR#199)
- Added support for `std::format` to `boost::core::string_view`. (#190)

### Changes in 1.86.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)

### Changes in 1.85.0

- 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.

### Changes in 1.84.0

- `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.

### Changes in 1.83.0

- 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`.

### Changes in 1.82.0

- 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.

### Changes in 1.81.0

- `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.

### Changes in 1.80.0

- 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.

### Changes in 1.79.0

- 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`.

### Changes in 1.78.0

- 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`.

### Changes in 1.77.0

- `boost/core/uncaught_exceptions.hpp` has been modified for compatibility with Mac OS 10.4 and older.

### Changes in 1.76.0

- 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`.)

### Changes in 1.74.0

- 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.

### Changes in 1.71.0

- 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.

### Changes in 1.69.0

- 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`.

### Changes in 1.67.0

- Updated `to_address` and `pointer_traits` to reflect the design adopted for C++20 in P0653R2.

### Changes in 1.65.0

- Implemented `pointer_traits` for C++03 and higher, that implements P0653r0.
- Added `BOOST_TEST_GT` and `BOOST_TEST_GE` to Lightweight Test.