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