[/
  Copyright 2021 Peter Dimov
  Distributed under the Boost Software License, Version 1.0.
  https://boost.org/LICENSE_1_0.txt)
]

[section Revision History]

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

[endsect]

[section Changes in 1.77.0]

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

[endsect]

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

[endsect]

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

[endsect]

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

[endsect]

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

[endsect]

[section Changes in 1.67.0]

* Updated `to_address` and `pointer_traits` to reflect the design adopted for C++20 in
  [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0653r2.html P0653R2].

[endsect]

[section Changes in 1.65.0]

* Implemented `pointer_traits` for C++03 and higher, that implements
  [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0653r0.html P0653r0].
* Added `BOOST_TEST_GT` and `BOOST_TEST_GE` to Lightweight Test.

[endsect]

[endsect]
