(feed/history/boost_1_64_0.qbk:1.64.0 beta1 -description_xhtml " " " "
boost::addressof is now used instead of
" directly taking the address #12615
" address,
" leak, and undefined sanitizers
" BOOST_NO_CXX11_SFINAE_EXPR
" defect detection.
" address,
" leak, and undefined sanitizers
" constexpr
" addressof on compilers
" that support C++11 constexpr
" and SFINAE expressions (Glen Fernandes). BOOST_CORE_NO_CONSTEXPR_ADDRESSOF
" macro indicates when constexpr
" addressof is not
" available.
" lightweight_test.hpp,
" added new macros BOOST_TEST_ALL_EQ
" and BOOST_TEST_ALL_WITH
" for testing container contents (Bjorn Reese).
" boost:dll::symbol_location_ptr function for
" getting location of a symbol by pointer that could not be dereferenced
" (void pointer for example)
" detail::aggressive_ptr_cast
" for member pointers
" address
" and leak sanitizers
" std::unary_function and std::binary_function when they're not
" available.
" BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED
" from Windows systems. This option derives the unique bootstamp used
" to name the folder where shared memory is placed from registry values
" associated with the session manager. This option only works on Vista
" and later systems and might be more stable than the default version.
" address,
" leak, and undefined sanitizers
" cpp_bin_float
" prevent double rounding when converting to a denormalized float.
" See #12527.
" cpp_bin_float.
" cpp_bin_float
" rounding code to round at arbitrary location so we can use it for
" conversions, see #12527.
" cpp_bin_float.
" See: #12580.
" cpp_int's,
" see #12627.
" ilogb (and code
" that uses it) to consistently return the smallest value of the exponent
" type when the argument is zero, see #12625.
" __float128
" to cpp_bin_float.
" cpp_int
" which would result in bit-loss, see #12790.
" cpp_int's
" caused by over-aggressive constexpr optimization, see #12798.
" BOOST_VERSION_NUMBER_MAJOR,
" BOOST_VERSION_NUMBER_MINOR,
" BOOST_VERSION_NUMBER_PATCH
" macros to extract components from valid version numbers.
" allocate_shared
" and make_shared for
" arrays for a more optimal and more maintainable implementation (Glen
" Fernandes)
" BOOST_TYPE_INDEX_IMPLEMENT_RUNTIME_CAST,
" which implements the functionality for runtime_cast
" but does not include the BOOST_TYPE_INDEX_REGISTER_CLASS
" macro (thanks to Chris Glover for imlpementing it)
" address,
" leak, and undefined sanitizers
" make_void
" and void_t.
" insert_or_assign
" and try_emplace in
" unordered_map, merge and extract
" in all containers.
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" Beman Dawes, Eric Niebler, " Rene Rivera, Daniel James, " Vladimir Prus and Marshall Clow managed this release. "
"boost::addressof is now used instead of
" directly taking the address #12615
" address,
" leak, and undefined sanitizers
" BOOST_NO_CXX11_SFINAE_EXPR
" defect detection.
" address,
" leak, and undefined sanitizers
" constexpr
" addressof on compilers
" that support C++11 constexpr
" and SFINAE expressions (Glen Fernandes). BOOST_CORE_NO_CONSTEXPR_ADDRESSOF
" macro indicates when constexpr
" addressof is not
" available.
" lightweight_test.hpp,
" added new macros BOOST_TEST_ALL_EQ
" and BOOST_TEST_ALL_WITH
" for testing container contents (Bjorn Reese).
" boost:dll::symbol_location_ptr function for
" getting location of a symbol by pointer that could not be dereferenced
" (void pointer for example)
" detail::aggressive_ptr_cast
" for member pointers
" address
" and leak sanitizers
" std::unary_function and std::binary_function when they're not
" available.
" BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED
" from Windows systems. This option derives the unique bootstamp used
" to name the folder where shared memory is placed from registry values
" associated with the session manager. This option only works on Vista
" and later systems and might be more stable than the default version.
" address,
" leak, and undefined sanitizers
" cpp_bin_float
" prevent double rounding when converting to a denormalized float.
" See #12527.
" cpp_bin_float.
" cpp_bin_float
" rounding code to round at arbitrary location so we can use it for
" conversions, see #12527.
" cpp_bin_float.
" See: #12580.
" cpp_int's,
" see #12627.
" ilogb (and code
" that uses it) to consistently return the smallest value of the exponent
" type when the argument is zero, see #12625.
" __float128
" to cpp_bin_float.
" cpp_int
" which would result in bit-loss, see #12790.
" cpp_int's
" caused by over-aggressive constexpr optimization, see #12798.
" BOOST_VERSION_NUMBER_MAJOR,
" BOOST_VERSION_NUMBER_MINOR,
" BOOST_VERSION_NUMBER_PATCH
" macros to extract components from valid version numbers.
" allocate_shared
" and make_shared for
" arrays for a more optimal and more maintainable implementation (Glen
" Fernandes)
" BOOST_TYPE_INDEX_IMPLEMENT_RUNTIME_CAST,
" which implements the functionality for runtime_cast
" but does not include the BOOST_TYPE_INDEX_REGISTER_CLASS
" macro (thanks to Chris Glover for imlpementing it)
" address,
" leak, and undefined sanitizers
" make_void
" and void_t.
" insert_or_assign
" and try_emplace in
" unordered_map, merge and extract
" in all containers.
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" Beman Dawes, Eric Niebler, " Rene Rivera, Daniel James, " Vladimir Prus and Marshall Clow managed this release. "
"BOOST_NO_CXX11_POINTER_TRAITS,
" BOOST_NO_CXX17_FOLD_EXPRESSIONS,
" BOOST_NO_CXX17_INLINE_VARIABLES,
" BOOST_NO_CXX17_STRUCTURED_BINDINGS
" defect detection.
" char16_t,
" char32_t, u16string, u32string.
" BOOST_PREDEF_WORKAROUND
" and BOOST_PREDEF_TESTED_AT
" macros for defect workarounds and detection.
" atomic_shared_ptr,
" that provides thread-safe atomic pointer operations over shared_ptr. (Peter Dimov)
" local_shared_ptr,
" where the reference count is updated with non-atomic operations.
" (Peter Dimov)
" allocate_shared
" and make_shared for
" arrays. (Glen Fernandes)
" unordered_set
" and unordered_multiset,
" and forunordered_map
" and unordered_multimap.
" This is required for C++17, so that nodes can be merged and extracted
" between compatible containers.
" allocator_traits
" construct and destroy on C++11 compilers, using
" piecewise pair construction when appropriate.
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" Beman Dawes, Eric Niebler, " Rene Rivera, Daniel James, " Vladimir Prus and Marshall Clow managed this release. "
"" Visual Studio 15.5 was released too late for us to test this release with it. "
"basic_socket<Protocol,
" SocketService>
" we now have simply basic_socket<Protocol>. The old interface can
" be enabled by defining the BOOST_ASIO_ENABLE_OLD_SERVICES
" macro.
" io_context
" basis.
" ssl::stream<> constructor argument.
" fetch_negate,
" fetch_complement
" - atomically replaces the value with a negated or binary complemented
" value and returns the original value
" opaque_<op>
" - equivalent to fetch_<op> except that it doesn't
" return the original value
" <op>_and_test
" - atomically applies <op>
" and returns true
" if the result is zero
" bit_test_and_set,
" bit_test_and_reset,
" bit_test_and_complement
" - atomically sets, resets or complements the specified bit
" and returns the original value of the bit
" atomic<T>::value_type
" and atomic<T>::difference_type member typedefs,
" where applicable, to the user's code.
" I,
" I32, I64, and w
" from Microsoft (parsed and ignored like all others).
" format_matrix
" that exercises as many different combinations of format strings
" as possible and logs them to a file:
" snprintf
" isspace(c)
" is not a macro in Dinkum clib for VxWorks, thanks to Brian Kuhl(@kuhlenough).
" fusion::tuple.
" std::array.
" next()/prior()
" functions now support user's iterators that don't specify nested
" types such as iterator_category,
" difference_type,
" etc. and instead specialize std::iterator_traits
" to define those types. The compiler must support C++17-compatible
" std::iterator_traits for this to work.
" modify and
" modify_key more robust
" so that the modified element is erased if the modifier throws or
" the rollback functor does not properly restore the element (full
" discussion at ticket #12542). This is technically backwards
" incompatible; for instance, the following code:
" c.modify(c.begin(),[](auto&){throw 0;}); ""
c
" untouched in former versions of Boost whereas now c.begin() is erased. Thanks to Jon Kalb for
" raising the issue.
" optional
" is now trivially-copyable for scalar Ts.
" This uses a different storage (just T
" rather than aligned_storage).
" We require the compiler to support defaulted functions.
" operator== to get rid of the -Wmaybe-uninitialized
" false-positive warning from GCC.
" -w64) if libbacktrace
" is properly installed. See "MinGW specific notes" section
" in documentation for more info.
" boost/next_prior.hpp has been moved to Boost.Iterator.
" No changes needed to the user's code.
" name_generator
" to support a configurable hash provider concept and provide
" an optional MD5 hash implementation per RFC-4122. This will
" make it easier to support whatever becomes the next standard
" hash algorithm.
" boost::uuids::ns.
" name_generator::operator() is now const, matching docs.
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" Beman Dawes, Daniel James, " Vladimir Prus and Marshall Clow managed this release. "
"basic_socket_acceptor::get_option.
" experimental::detached
" completion token.
" experimental::redirect_error
" completion token.
" experimental::co_spawn
" facility for integration with the coroutines technical specification.
" (op)_and_test
" operations added in Boost 1.66 to the opposite - the functions now
" return true if the operation
" result is non-zero. This is consistent with other test
" methods in Boost.Atomic and the C++ standard library. Users can define
" BOOST_ATOMIC_DETAIL_HIGHLIGHT_OP_AND_TEST
" when compiling their code to emit warnings on every use of the changed
" functions. This way users can locate the code that needs to be updated.
" (#11)
" memory_order enumeration
" is now scoped and contains constants with shorter names like acquire, release
" or seq_cst (i.e.
" users can use memory_order::acquire
" instead of memory_order_acquire).
" The old constants are also provided for backward compatibility. (P0439R0)
" add, sub,
" negate operations
" and their fetch_(op) and opaque_(op) versions are supported. Lock-free
" property can be tested with the new macros BOOST_ATOMIC_FLOAT/DOUBLE/LONG_DOUBLE_LOCK_FREE.
" The support for floating point types is optional and can be disabled
" by defining BOOST_ATOMIC_NO_FLOATING_POINT.
" (P0020R6)
" negate_and_test
" and complement_and_test
" which perform negation or bitwise complement and return true if the result is not zero.
" add, sub, negate,
" bitwise_and,
" bitwise_or,
" bitwise_xor,
" bitwise_complement
" operations which perform the operation and return its result.
" atomic<T> specialization, the default constructor
" is now trivial if T's
" default constructor is.
" atomic<T> has been updated to avoid undefined
" behavior that stems from signed integer overflows. As required by
" the C++ standard, the library uses two's complement representation
" of signed integers internally and accroding rules of overflow. Currently,
" the library requires the native signed integer types to also use
" two's complement representation (but no defined overflow semantics).
" ebx
" value.
" websocket::stream
" which can lead to asserts or undefined behavior. Users are encouraged
" to update to the latest Boost release.
" std::string_view,
" std::error_code, std::error_condition
" std::optional, std::variant,
" std::monostate where available.
" __sanitizer_finish_switch_fiber
" should be called directly after context switch
" fusion::map
" to fix compile error on newer MSVC 2017. (PR#164)
" fusion::vector. (PR#166)
" fusion::tag_of
" and fusion::is_native_fusion_sequence. Note
" that this changes no behaviour from previous release, but compliant
" to TypeTraits's change. (PR#171)
" unique_ptr
" interface in addition to C++2003 auto_ptr
" - in order to support C++2017, now you can use BOOST_LOCALE_HIDE_AUTO_PTR
" definiton to remove auto_ptr
" from the interfaces and prevent deprecated watnings.
" icu/date_time
" allocator_traits
" to work with allocators instead of directly accessing its members.
" operator& are now fully accepted (ticket
" #13307). Thanks to Daniel Frey for his updating Boost.Operators
" to help fix this issue.
" std::allocator
" members deprecated in C++17. Contributed by Daniela Engert.
" static_cast<unsigned>(~static_cast<unsigned>(0) & my_value). Note that technically (to avoid
" undefined behaviour) you should do the same thing with built in integer
" types too. See #13109.
" boost_python27
" and boost_numpy27,
" etc.. Combined with a related fix in Boost.Build, this means that
" it is now possible to build variants for multiple Python versions
" in a single build process.
" with_context
" (#239)
" error_handler::position() (#248)
" uint_parser<signed
" T>
" (#297)
" ForwardIterator
" to ReadableIteratorConcept
" && ForwardTraversalConcept
" (#320)
" fusion::map
" support (#330)
" parse_nan
" from dereferencing out of range iterator (#351)
" uint_parser<signed
" T>
" (#297)
" ForwardIterator
" to ReadableIteratorConcept
" && ForwardTraversalConcept
" (#320)
" parse_frac_n from user defined
" real policy does not return negative values and also to prevent
" static analyzers false-positives (#358)
" BOOST_AUTO_TEST_CASE_TEMPLATE
" now accepts a sequence of types in an std::tuple
" detected,
" detected_or, is_detected, is_detected_convertible,
" is_detected_exact,
" is_complete.
" is_constructible
" is fully implemented, see #12003.
" is_function
" and is_member_function_pointer
" to work correctly with C++17 noexcept specifications.
" is_default_constructible
" and std::pair.
" is_nothrow_swappable
" on pre-C++11 compilers.
" <boost/utility.hpp>
" header no longer includes boost::next
" and boost::prior as they have been moved to
" the iterator module. Instead include <boost/next_prior.hpp>.
" Other uses of <boost/utility.hpp> are discouraged, it's better
" to use the header for the specific functionality instead.
" noexcept
" specifications for swap,
" operator=
" and node handles.
" element_type
" to iterators, so that std::pointer_traits
" will work.
" std::piecewise_construct on recent Visual
" C++ and Dinkumware libraries.
" std::iterator_traits rather than the
" boost iterator traits in order to remove dependency on Boost.Iterator.
" std::iterator,
" as it's deprecated (PR#7).
" random_generator_mt19937
" for bulk UUID generation
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" Beman Dawes, Daniel James, " Vladimir Prus and Marshall Clow managed this release. "
"std::bind1st
" by std::bind, std::auto_ptr
" by std::unique_ptr, and std::random_shuffle
" by std::shuffle. (PR#89)
" <boost/iterator.hpp> include (PR#104)
" map() for transforming optional<T>
" into optional<U>
" using a function of type T
" -> U.
" flat_map() for transforming optional<T>
" into optional<U>
" using a function of type T
" -> optonal<U>.
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" TODO "
"" Boost build system now supports visibilities and builds shared libraries with " hidden visibility by default. As a result Boost shared libraries become smaller, " load faster and have less chances to get a symbol collision. "
"" See Boost.Build " visibility and local-visibility for more info. "
"
" To disable that feature use ./b2 visibility=global like
" command during build.
"
boost::any
" variables constructed in one shared library with hidden visibility
" could be used and destroyed in other shared library with hidden visibility.
" boost::empty_value,
" for library authors to conveniently leverage the Empty Base Optimization
" to store objects of potentially empty types (Glen Fernandes). This
" facility is now used in Boost.Beast, Boost.CircularBuffer, Boost.MultiArray,
" and more.
" boost::quick_exit
" to provide the C++11 standard library facility std::quick_exit
" functionality (Peter Dimov).
" boost::report_errors (Glen Fernandes).
" boost::filesystem::copy
" due to undefined behavior in the implementation. (PR#71)
" boost::filesystem::directory_iterator
" implementation. (PR#77)
" BOOST_FOREACH.
" boost/pending/integer_log2.hpp header is deprecated and will
" be removed in future releases. Use boost/integer/integer_log2.hpp
" instead.
" mp_starts_with
" facility (Glen Fernandes).
" std::for_each_n and std::sample.
" libbacktrace usage
" was significantly improved. BOOST_STACKTRACE_USE_BACKTRACE
" or boost_stacktrace_backtrace
" users are encouraged to update:
" backtrace.h
" header now can be specified via BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE,
" to allow backtrace.h
" header usage on platforms and compilers where that header is
" unreachable otherwise (for example Ubuntu Xenial + Clang) #59.
" max_depth
" is set (thanks to Jan Eisenhauer for the PR!) #67.
" to_string(const stacktrace& )
" functions for fast conversion of stacktraces to std::string
" #57.
" constexpr.
" error_category
" is now protected and
" no longer virtual. This
" is a potentially breaking change, but its impact is expected to be
" limited.
" error_category now
" has a constructor that accepts a 64 bit identifier, enabling distinct
" category objects to compare equal.
" error_category
" are now protected.
" message
" has been added.
" failed
" has been added, allowing categories for which success is not synonymous
" with 0.
" boost::system::throws
" object has been removed.
" boost::throws()
" is now deprecated and its use is discouraged.
" system_error
" taking a single error_code
" argument is now explicit.
" system_error::code()
" now returns by value.
" BOOST_TEST_CASE_NAME
" boost::exception
" in the logs
" boost::compressed_pair
" by avoiding the empty base optimization for types which are declared
" as final (Glen Fernandes).
" boost::bad_visit
" exception could cross the boundaries of shared library with hidden
" visibility and could be catched in other shared library with hidden
" visibility.
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" TODO "
"basic_stream and tcp_stream offer:
" bind_executor
" at call sites!
" async_base and stable_async_base and handle
" all composed operation boilerplate for you.
" ssl_stream provides a movable,
" assignable SSL stream with a flat write optimization.
" async_initiate
" for efficient integration with Coroutines TS.
" BOOST_BEAST_SPLIT_COMPILATION
" and #include <boost/beast/src.hpp> in one of your .cpp files!
" 1 to make
" the Boost.DLL use C++17's std::filesystem::path,
" std::system_error and std::error_code (#21). Note that
" exception types change from boost::system::system_error
" to std::system_error, so make sure to update
" catches.
" shared_library::decorate() function that returns a decorated
" path to the library without doing any platform related queries and
" detections. Prefer using shared_library::load
" and shared_library
" constructors for better results (many thanks to Loïc Touraine for
" the work PR#23).
" std::string::end() in path
" implementation.
" error_code. (#58)
" path.
" (#12759)
" directory_entry.
" This avoids a relatively expensive OS query when file status is requested
" for a result of dereferencing a directory iterator. (PR#55)
" current_path
" and read_symlink
" implementation to avoid possible memory exhaustion on broken or tampered
" with filesystems. The functions now have an internal limit of the
" path size they will accept from the OS, which is currently 16 MiB.
" copy_file.
" mp_invoke
" to mp_invoke_q
" mp_similar
" mp_set_union,
" mp_set_intersection,
" mp_set_difference
" mp_not_fn
" mp_transform_first,
" mp_transform_second,
" mp_transform_third
" mp_filter
" mp_eval_if_not,
" mp_eval_or, mp_valid_q
" mp_back, mp_pop_back
" size_type and difference_type are now defined
" as the allocator's same-named types. This will not make any difference
" in the vast majority of cases, but allows for some degree of control
" of resulting internal structures via user-defined allocator types
" (see issue #17 for motivation). For the moment being,
" this change is not documented in the reference section (i.e., it
" has semi-official status).
" minimal.hpp
" is now showing a deprecation warning,
" unit_test_log_formatter,
" see detailed change log,
" BOOST_TEST(3.0001 ==
" 3)
" now use floating point support of Boost.Test,
" sample type field anymore,
" std::tuple
" to any variadic definition,
" BOOST_TEST_INFO_SCOPE
" for scoped context declaration,
" BOOST_TEST_CONTEXT
" syntax
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" TODO "
"__float128
" not being considered as a floating point type by some versions of
" libstdc++.
" endian_reverse,
" conditional_reverse
" and \*\_to_* constexpr
" on GCC and Clang
" data(); changed its return type to unsigned char*
" __int128 support
" to endian_reverse
" when available
" boost/endian.hpp
" filesystem_error
" to exception.hpp; file_status
" and associated enums and functions to file_status.hpp;
" directory_entry,
" directory_iterator
" and recursive_directory_iterator
" to directory.hpp.
" operations.hpp still includes the new headers
" exception.hpp, file_status.hpp
" and directory.hpp, unless BOOST_FILESYSTEM_NO_DEPRECATED
" macro is defined. These implicit includes are considered deprecated
" and will be removed in a future release. Users are encouraged to
" include the new headers directly or include filesystem.hpp.
" filesystem_error
" exception is now implemented in the compiled library of Boost.Filesystem.
" Users may need to add linking with Boost.Filesystem library in their
" projects.
" utimensat
" instead of utime.
" utime is declared
" obsolete in POSIX.1-2008 and can be disabled e.g. in uClibc-ng. (PR#115)
" directory_iterator
" is now left in the end state on memory allocation errors.
" directory_iterator
" on POSIX systems, support for readdir/readdir_r has been reworked to
" avoid memory allocations for dirent
" structures when readdir
" is used. This reduces memory consumption and eliminates the possibility
" of buffer overruns in case if readdir
" produces a very long directory name.
" directory_options
" enum, which reflects the same named enum from C++20. The enum is
" supported in directory_iterator
" and recursive_directory_iterator
" to customize iteration behavior. In particular, the iterators now
" support skipping directories that can't be opened due to insufficient
" permissions. The symlink_option
" enum is now deprecated and should be replaced with directory_options.
" recursive_directory_iterator
" is now reset to the end state in case of errors, as required by C++20.
" (#112)
" directory_options::pop_on_error
" option, which configures recursive_directory_iterator
" so that it attempts to recover from iteration errors by repeatedly
" invoking pop()
" until it succeeds or the end state is reached. (#113)
" directory_options::skip_dangling_symlinks
" option, which configures recursive_directory_iterator
" so that it doesn't follow dangling directory symlinks and continues
" iteration instead of reporting an error.
" recursive_directory_iterator
" are now marked as deprecated: level(), no_push_pending(), no_push_request(), no_push(). Users are advised to replace their
" use with the standard counterparts: depth(), recursion_pending(), disable_recursion_pending(). Note that recursion_pending() has the opposite meaning compared
" to no_push_pending() and no_push_request(). Deprecated methods will be removed
" in a future release.
" path::lexically_relative (and any dependent
" algorithms) to correctly handle empty, dot and dot-dot path elements
" in its argument. The behavior is made closer to C++17 std::path::lexically_relative in that empty
" and dot path elements are ignored and dot-dot path elements are accounted
" by decreasing the number of dot-dot path elements to generate in
" the resulting relative path. (#76)
" factory
" and value_factory
" to provide the following features:
" BOOST_NO_EXCEPTIONS)
" BOOST_FUNCTIONAL_VALUE_FACTORY_MAX_ARITY
" boost::none_t
" in place of void
" through BOOST_FUNCTIONAL_FACTORY_SUPPORT_NONE_T
" kernel_2d
" and kernel_2d_fixed,
" in Numeric extension (PR
" #361).
" convolve_2d
" (PR #367).
" cached_location_t
" (PR #287).
" extend_boundary
" in Numeric extension to perform image boundary extension (PR #386).
" RELEASES.md (PR
" #404).
" test/
" directory (PR
" #302).
" std::is_trivially_default_constructible
" specializations (PR
" #284).
" make
" install-able, and
" cmake find_package() can find it. Note that you
" must separately install and find_package() Outcome's dependency, quickcpplib,
" else find_package() of Outcome will fail.
" find_package() uses it. This breaks the
" use of the unconfigured Outcome repo as an implementation of
" Outcome, one must now do one of: 1. Add Outcome as subdirectory
" to cmake build. 2. Use cmake superbuild (i.e. ExternalProject_Add())
" to build and install Outcome into a local installation. 3.
" Use one of the single header editions.
" CXX_CONCEPTS_FLAGS
" to an empty string to prevent auto detection and enabling of
" C++ Concepts support occurring.
" OUTCOME_TRY
" operation now hints to the compiler that operation will be
" successful. [P1886 Error speed benchmarking](https://wg21.link/P1886)
" showed that there is considerable gain in very small functions
" by hinting to the compiler whether the expression is expected
" to be successful or not. OUTCOME_TRY
" previously did not hint to the compiler at all, but now it
" does. A new suite of macros OUTCOME_TRY_FAILURE_LIKELY
" hint to the compiler that failure is expected. If you wish
" to return to the previously unhinted behaviour, define OUTCOME_TRY_LIKELY(expr)
" to (!!expr).
" OUTCOME_CO_TRY() operation suitable for performing
" the TRY operation
" from within a C++ Coroutine. Secondly, in the header outcome/coroutine_support.hpp there are implementations
" of eager<OutcomeType>
" and lazy<OutcomeType>
" which let you more naturally and efficiently use basic_result or basic_outcome from within
" C++ Coroutines -- specifically, if the result or outcome will
" construct from an exception pointer, exceptions thrown in the
" coroutine return an errored or excepted result with the thrown
" exception instead of throwing the exception through the coroutine
" machinery (which in current compilers, has a high likelihood
" of blowing up the program). Both eager<T> and lazy<T> can accept any T as well. Both have been
" tested and found working on VS2019 and clang 9.
" make_error_code() and make_exception_ptr() are now additionally considered
" for compatible copy and move conversions for basic_result<>.
" This lets you construct a basic_result<T, E> into a basic_result<T, error_code>, where E
" is a custom type which has implemented the ADL discovered free
" function error_code
" make_error_code(E),
" but is otherwise unrelated to error_code.
" The same availability applies for exception_ptr
" with make_exception_ptr() being the ADL discovered
" free function. basic_outcome<> has less support for
" this than basic_result<> in order to keep constructor
" count down, but it will accept via this mechanism conversions
" from basic_result<> and failure_type<>.
" [[nodiscard]]
" support in the compiler was very mildly broken.
" __VA_OPT__
" construct
" BOOST_PP_VARIADIC_HAS_OPT
" whether __VA_OPT__
" is supported at the C++20 level
" BOOST_PP_CHECK_EMPTY
" test for emptiness using __VA_OPT__
" at the C++20 level
" BOOST_PP_VA_OPT
" more flexible alternative to __VA_OPT__
" at the C++20 level
" allocate_unique
" for scalars and arrays. (Glen Fernandes)
" BOOST_VMD_IS_EMPTY
" updated to use __VA_OPT__
" at the C++20 level has 100% reliability
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" Marshall Clow and Michael Caisse managed this release. "
"<algorithm>.
" source_location.
" atomic_flag::test
" operation, which was introduced in C++20.
" atomic<T>
" should now take into account alignment requirements of T, which makes a difference if
" those requirements are higher than that of the internal storage of
" atomic.
" T used with atomic and atomic_ref.
" This should prohibit invalid types from being used as atomics.
" bit_test_and_* operations on 8 and 16-bit arguments.
" Other architectures are not affected.
" compare_exchange_* operations, if alignment requirements
" of value_type are
" less than that of the internal storage of atomic.
" boost/atomic/atomic.hpp no longer includes boost/atomic/atomic_flag.hpp and boost/atomic/fences.hpp
" and only defines the boost::atomic
" class template and related typedefs. Include the other headers explicitly
" or use boost/atomic.hpp to include all parts of Boost.Atomic.
" atomic<T>::storage()
" accessor and associated atomic<T>::storage_type
" type are deprecated. Instead, users are advised to use atomic<T>::value()
" and atomic<T>::value_type, respectively. Users
" can define BOOST_ATOMIC_SILENCE_STORAGE_DEPRECATION
" to disable deprecation warnings for the time of transition. The deprecated
" pieces will be removed in a future release.
" BOOST_ATOMIC_DETAIL_HIGHLIGHT_OP_AND_TEST.
" This macro was used as a helper for transition to the updated returned
" values of *_and_test
" operations in Boost.Atomic 1.67, which was released 2 years before
" 1.73.
" mutable_data_type
" in Beast dynamic buffers is deprecated.
" boost::polymorphic_downcast for references
" (thanks to Julien Delacroix for the patch).
" boost::dll::smart_library
" (thanks to Ramil Gauss for #35).
" boost::dll::load_mode::type
" #30.
" extension/dynamic_image/reduce.hpp
" as unused and possibly unfinished (PR#466). An implementation
" attempt of techniques described in the paper [Efficient Run-Time
" Dispatching in Generic Programming with Minimal Code Bloat](http://lubomir.org/academic/MinimizingCodeBloat.pdf)
" by Lubomir Bourdev, Jaakko Jarvi.
" BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
" and BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES.
" Instead, if a test target is built, it builds all its test
" cases unconditionally.
" longjmp
" interaction during destruction of I/O extension objects (PR#433).
" image class (PR#429).
" ostream_joiner
" for delimiter based joining. (Glen Fernandes)
" ostream_string
" from the Utility library to the IO library as ostream_put.
" (Glen Fernandes implemented this facility when optimizing the output
" of string views to write directly to the stream buffer).
" core::flush now performs a flush
" on the default sink used for trivial logging, when no sinks
" are registered.
" openlog
" call. Such implementations could access already freed memory
" on each syslog
" call, resulting in undefined behavior. (#97)
" rotation_at_time_point(boost::gregorian::greg_day(1))) could be silently ignored
" and not happen. (#98)
" text_file_backend::rotate_file
" could throw if there were no log records written yet and target
" file name pattern was set.
" std::allocator_traits
" to improve compatibility with C++20 allocators.
" mp_unique_if
" (contributed by Kris Jusiak)
" mp_flatten
" mp_rotate_left,
" mp_rotate_right (contributed
" by Duncan Barber)
" mp_compose
" mp_power_set
" mp_partial_sum
" mp_iterate
" multi_index_container
" is now AllocatorAware.
" KeyFromValue,
" Compare, Hash and Pred
" objects now selects the appropriate swap
" function between std::swap
" and ADL candidates, in accordance with standard specifications in
" [swappable.requirements] (issue
" #29).
" better_optimisation
" Outcome v2.2.0 future branch was merged to Outcome v2.1.3 which
" includes a new status bitfield implementation. This appears
" to not confuse clang's optimiser, and clang 9 produces code
" which routinely beats GCC 9's code for various canned use cases.
" make
" install) breaking
" itself rather more frequently than is ideal, installability
" is now tested on CI per commit.
" T
" and E, so removed
" template constraints, falling back to static assert which runs
" later in the type instantiation sequence.
" boost::poly_collection::for_each.
" throw_exception
" that takes a boost::source_location
" object.
" BOOST_THROW_EXCEPTION
" with exceptions disabled will need to add a definition of this new
" overload.
" ostream_string
" facility has moved from the Utility library to the IO library as
" ostream_put.
" std::hash,
" boost::hash.
" variant<T...>
" is now trivial when all types in T... are trivial. This improves performance
" by enabling it to be passed to, and returned from, functions in registers.
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" TODO "
"any_io_executor
" type alias has been introduced as the default runtime-polymorphic
" executor for all I/O objects. This defaults to the execution::any_executor<>
" template. If required for backward compatibility, BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT
" can be defined to use the old asio::executor
" polymorphic wrapper instead.
" BOOST_ASIO_NO_TS_EXECUTORS.
" basic_waitable_timer.
" co_spawn
" that launch an awaitable.
" use_awaitable_t's
" default executor adapter, to enable conversion between executor types.
" detached_t
" as a default completion token, by adding members as_default_on() and as_default_on_t<>.
" ssl::stream<>.
" ssl::stream<>
" write operations to linearise gather-write buffer sequences.
" asio_handler_invoke,
" asio_handler_allocate,
" and asio_handler_deallocate
" hooks, when BOOST_ASIO_NO_DEPRECATED
" is defined.
" async_compose
" to work with copyable handlers when passed by lvalue.
" co_spawn.
" Executor
" base class from the executor_binder
" implementation.
" BOOST_ASIO_NO_DEPRECATED.
" Define this to help identify areas of your Beast and Asio code which
" use deprecated Asio interfaces.
" BOOST_ASIO_NO_TS_EXECUTORS.
" Define this to identify uses of executors from the now potentially
" outdated Networking
" TS
" BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT
" in which the Networking TS model will be used by default. Setting
" this flag does not prevent a program from using executors from the
" Standard Executors model explicitly.
" BOOST_NO_CXX11_OVERRIDE
" and BOOST_OVERRIDE.
" (Glen Fernandes)
" 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. These are now used in Circular_Buffer, Wave,
" Lockfree, Heap, Smart_Ptr, Dynamic_Bitset, Format, Bimap and more.
" (Glen Fernandes)
" endian_reverse.
" bool, enum, float,
" double in endian_reverse_inplace.
" endian_reverse_inplace
" for arrays.
" image
" constructor from other image (PR#477).
" plane_view_t
" is not a class or namespace name (PR#481).
" numeric/kernel.hpp
" to make it self-contained (PR#502).
" skew_heap.
" (Glen Fernandes)
" mp_with_index<N> for large N.
" tuple_transform
" (contributed by Hans Dembinski.)
" boost::nowide::utf namespace
" stat
" with UTF-8 paths
" better_optimisation.
" This branch has a number of major breaking changes to Outcome
" v2.1, see the front page for details.
" void
" results and outcomes no longer default construct types during
" explicit construction. Previously if you explicitly constructed
" a result<T>
" from a non-errored result<void>, it default constructed
" T. This was
" found to cause unhelpful surprise, so it has been disabled.
" OUTCOME_ENABLE_LEGACY_SUPPORT_FOR.
" The macro OUTCOME_ENABLE_LEGACY_SUPPORT_FOR
" can be used to enable aliasing of older naming and features
" to newer naming and features when using a newer version of
" Outcome.
" OUTCOME_ENABLE_LEGACY_SUPPORT_FOR
" is set to 210 or
" lower.
" OUTCOME_V2_NAMESPACE::concepts
" namespace. Previously concepts lived in the convert
" namespace, now they live in their own namespace.
" basic_result<T> and basic_outcome<T> added. End users were finding
" an unhelpful gap in between is_basic_result<T> and value_or_error<T> where they wanted a concept
" that matched types which were basic_result,
" but not exactly one of those. Concepts filling that gap were
" added.
" TRY
" works differently from Outcome v2.2 onwards. This is a severely
" code breaking change which change the syntax of how one uses
" OUTCOME_TRY(). A regular expression suitable
" for upgrading code can be found in the list of changes between
" Outcome v2.1 and v2.2.
" noexcept(std::is_constructible<T,
" void>)
" failing to compile which I originally submitted years ago.
" So give up waiting on Apple to fix their clang, add a workaround
" to Outcome.
" event_comparison_type,
" vertex_equality_predicate_type,
" and voronoi_predicates.
" (Glen Fernandes)
" owner_equals
" to shared_ptr, weak_ptr, local_shared_ptr.
" owner_hash_value
" to shared_ptr, weak_ptr.
" owner_equal_to,
" owner_hash.
" std::hash specializations for shared_ptr, local_shared_ptr.
" boost::hash support to, and std::hash, std::equal_to
" specializations for, weak_ptr.
" -fno-exceptions (thanks to Jeremiah
" Rodriguez #91).
" operator bool() now returns failed() instead of value() != 0.
" conjunction,
" disjunction, negation, is_trivially_copyable,
" is_scoped_enum, and
" is_unscoped_enum.
" (Glen Fernandes)
" visit.
" visit<R>.
" __VA_OPT__
" (PR#75)
" __has_include
" (PR#102)
" check_macro_naming,
" useful with Boost itself (PR#97)
" std::allocator
" member removal in C++20 (PR#72)
" token_statistics
" sample (PR#79)
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" TODO "
"devector
" container.
" endian_arithmetic
" no longer inherits from endian_buffer
" BOOST_ENDIAN_NO_CTORS
" is defined, the unaligned endian_buffer
" and endian_arithmetic
" are C++03 PODs, to enable use of __attribute__((packed))
" creation_time
" operation, which allows to obtain file creation time. (Inspired by
" PR#134)
" last_write_time(p, ec) operation in case of failure has
" been changed to a minimal value representable by std::time_t
" instead of -1.
" hard_link_count(p, ec) operation in case of failure has
" been changed to static_cast<uintmax_t>(-1) instead of 0.
" file_size
" will now indicate error code errc::function_not_supported
" if the path resolves to a non-regular file. Previously, errc::operation_not_permitted was reported.
" statx
" system call internally, when possible, which allows to reduce the
" amount of information queried from the filesystem and potentially
" improve performance. The statx
" system call was introduced in Linux kernel 4.11.
" const-qualification
" from return types of some path
" methods. This could prevent move construction and move assignment
" at the call site in some cases. (#160)
" statvfs
" system call to obtain filesystem space information. (Inspired by
" PR#162)
" text_file_backend when generating
" the target file name (based on the pattern set by set_target_file_name_pattern
" method) when the log file is rotated. (#125)
" basic_sink_frontend
" with an atomic. (#128)
" asynchronous_sink
" frontend, resolved a possible conflict between flush and run
" methods, if run
" is called from a user's thread instead of the internal dedicated
" thread spawned by the frontend. (#131)
" mp_pairwise_fold
" (suggested by Barry Revzin)
" mp_invoke
" (use mp_invoke_q)
" event_comparison_type,
" vertex_equality_predicate_type,
" and voronoi_predicates.
" (Glen Fernandes)
" OUTCOME_ENABLE_LEGACY_SUPPORT_FOR
" to less than 220
" to enable emulation.
" OUTCOME_GCC6_CONCEPT_BOOL.
" Older GCCs had boolean based concepts syntax, whereas newer
" GCCs are standards conforming. However the precise logic of
" when to use legacy and conforming syntax was not well understood,
" which caused Outcome to fail to compile depending on what options
" you pass to GCC. The new logic always uses the legacy syntax
" if on GCC 8 or older, otherwise we use conforming syntax if
" and only if GCC is in C++ 20 mode or later. This hopefully
" will resolve the corner case build failures on GCC.
" BOOST_NO_EXCEPTIONS
" defined. Thanks to Emil, maintainer of Boost.Exception, making
" a change for me, Boost.Outcome should now compile with C++
" exceptions globally disabled. You won't be able to use boost::exception_ptr as it can't
" be included if C++ exceptions are globally disabled.
" final_suspend() was not noexcept,
" despite being required to be so in the C++ 20 standard. This
" has been fixed, but only if your compiler implements noop_coroutine. Additionally,
" if noop_coroutine
" is available, we use the much more efficient coroutine handle
" returning variant of await_suspend() which should significantly
" improve codegen and context switching performance.
" windows_error.hpp,
" linux_error.hpp, and cygwin_error.hpp
" emit deprecation messages and are slated for removal.
" generic_category() and system_category() emit deprecation messages and are
" slated for removal.
" error_condition::failed is deprecated and is slated
" for removal. operator bool()
" for error_condition
" has been reverted to its old meaning of value() != 0. This is done for compatibility with
" std::error_condition as the next release
" is expected to improve interoperability with <system_error>
" even further. Note that this does not
" affect error_code::failed,
" which is still alive and well.
" error_condition::message
" that takes a buffer is deprecated and is slated for removal, for
" the same reasons. Note that this does
" not affect error_code::message.
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" TODO "
"boost::bind.
" boost::apply to use variadic templates
" and perfect forwarding.
" <execution>).
" [[likely]]
" instead of compiler-specific markup to indicate when TRY has
" likely success or failure.
" spare_storage(const
" basic_result|basic_outcome *)
" noexcept was not propagated
" over BOOST_OUTCOME_TRY,
" which causes things like stack backtraces captured at the point
" of construction of an errored result to get dropped at every
" TRY point.
" This has been fixed by adding an optional spare_storage
" to success_type<T> and failure_type<T>, as well as to auto success(T
" &&, ...)
" and auto failure(T
" &&, ...).
" BOOST_NO_EXCEPTIONS
" defined. Thanks to Emil, maintainer of Boost.Exception, making
" a change for me, Boost.Outcome should now compile with C++
" exceptions globally disabled. You won't be able to use boost::exception_ptr as it can't
" be included if C++ exceptions are globally disabled.
" BOOST_OUTCOME_TRY
" had been broken since the inception of this library for certain
" corner case code, which required a breaking change in how TRY
" works. See the
" changelog in the documentation for more detail.
" ARCH_PPC_64 predef.
" ARCH_WORD_BITS* redefinition warnings/errors.
" ARCH_E2K, Elbrus
" 2000, architecture from Konstantin Ivlev.
" WORD_BITS set
" of predefs to detect the architecture word size. Initial implementation
" inspired by submission from Mikhail Komarov.
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" TODO "
"_1
" + 5,
" _1 %
" 2 == 0, _1
" > _2,
" or _1 ==
" ' ' || _1 == '\t'.
" boost::anys::basic_any - a data type with customizable
" Small Object Optimization whose instances can hold instances of any
" type that satisfies ValueType requirements (many thanks to Ruslan
" Arutyunyan @rarutyun). If you are not sure that you really need it,
" then use boost::any instead.
" make_atomic_ref
" and make_ipc_atomic_ref
" factory functions for constructing atomic reference objects.
" atomic_ref and ipc_atomic_ref
" to allow omitting template arguments when they can be deduced from
" constructor arguments.
" boost::dll::library_info
" boost::dll::library_info use info from .dynsym
" ELF section if .symtab
" is empty or missing
" boost::dll::library_info
" as they are available for import (#50)
" wchar_t
" to char on POSIX environment, thanks to Vladislav Shchapov (PR#49)
" BOOST_FILESYSTEM_VERSION macro
" to either 3 or 4 when compiling their code. There is no need to separately
" compile Boost.Filesystem for each library version - a single binary
" supports both v3 and v4. Users should avoid using both v3 and v4
" in the same application as this can lead to subtle bugs. Currently,
" v3 is the default. In a future release v4 will become the default,
" and eventually v3 will be removed. v4 is functional, but it is still
" a work in progress and there may be breaking API changes in the future.
" path::filename,
" path::stem and path::extension
" no longer consider root name or root directory of the path as a filename
" if the path only consists of those components. For example, on Windows
" path("C:").filename()
" used to return "C:" and path("C:\\").filename() used to return "\" and
" both will return an empty path now. (#88, #194)
" path::stem
" and path::extension no longer treat a filename
" that starts with a dot and has no other dots as an extension. Filenames
" starting with a dot are commonly treated as filenames with an empty
" extension. The leading dot is used to indicate a hidden file on most
" UNIX-like systems. (#88)
" path("\\\\.\\").stem()
" == "\\\\").
" It is recommended to use the prefixes only with Boost.Filesystem
" v4.
" path::lexically_normal implementation
" to eliminate some cases of duplicate dot (".") elements
" in the normalized paths.
" statx and getrandom system calls on Linux.
" This can be useful if the syscall is present at compile time but
" fails with ENOSYS
" at run time (for example, in Docker containers that restrict the
" syscall, even if available on the host). (#172)
" copy_options::synchronize_data
" and copy_options::synchronize
" options for the copy_file
" operation. These options allow to synchronize the written data and
" attributes with the permanent storage. These options are expensive
" in terms of performance, but allow to ensure reliability of the copied
" data. Note that copy_file
" performed implicit data synchronization on POSIX systems since Boost.Filesystem
" 1.74.0. This release adds support for more platforms and disables
" data synchronization by default while allowing the caller to explicitly
" request it. (#186)
" EINTR
" error code on POSIX systems for some system calls issued internally.
" In particular, EINTR
" could have been ignored on close,
" which on HP-UX would result in a leaked file descriptor.
" copy_file
" implementations based on Linux sendfile
" and copy_file_range
" system calls, added handling of error codes indicating that a particular
" filesystem does not support the system call and fall back to the
" generic read/write loop. This should fix copy_file failing on eCryptFS
" and possibly other filesystems. (#184)
" copy_file_range
" system call is now used since Linux kernel 4.5, whereas previously
" it was only enabled since 5.3. The copy_file
" implementation will fall back to sendfile
" or read/write loop if copy_file_range
" fails to copy a given file across filesystems.
" copy_file implementations
" based on Linux sendfile
" and copy_file_range
" system calls will not be used on filesystems that are known to contain
" files with generated content. These system calls are incompatible
" with such files, and copying them would result in zero-sized files.
" The generic read/write loop will be used instead.
" Currently, the blacklisted filesystems are: procfs, sysfs, tracefs
" and debugfs.
" copy_file
" implementation based on read/write loop, increased the maximum
" size of the buffer used for temporary storage and take into account
" the target filesystem block size for more optimal performance.
" current_path
" to obtain the current path for a process will now fail with an error
" instead of returning successfully with a root path. This platform
" does not support current directory. Changing the current path was
" already failing similarly in previous releases of Boost.Filesystem.
" canonical, fixed
" the check for a symlink referencing a directory above root, if an
" earlier symlink was resolved to an absolute path with a different
" root from the original path.
" canonical, added
" a limit for the maximum number of symlinks that can be resolved during
" the call. The limit is currently at least 40 symlinks.
" canonical
" and weakly_canonical
" will now use path::preferred_separator
" for the root directory separator in the resulting paths. This fixes
" "file not found" errors caused by Windows API not handling
" generic separators in UNC paths and paths that start with the Win32
" filesystem prefix ("\?"). (#87, #187)
" weakly_canonical
" overloads taking base
" path as an argument.
" read_symlink on
" Windows, corrected reparse point handling. The operation would return
" an empty path for some mount points (for example, created by Box cloud storage driver) and
" directory junction points that had empty print names. The new implementation
" now parses substitute name of the reparse point and attempts to reconstruct
" a Win32 path from it. (#187)
" boost/filesystem/fstream.hpp
" will use wide character paths on libc++ versions 7.0 and higher,
" when the standard library supports opening files with wide character
" paths. (#181)
" path::imbue. The supported compilers
" include MSVC, GCC and Clang, as well as other compilers that support
" customizing program initialization order through #pragma
" section (for MSVC-compatible
" compilers) or __attribute__
" ((init_priority)) (for GCC-compatible compilers).
" mp_intersperse,
" mp_split, mp_join
" boost::pfr::hash_value()
" error_category
" to std::error_category has been improved
" and no longer requires <map>
" or <mutex>.
" error_category
" are now inline friends instead of member functions (a side effect
" of the previous change.)
" error_condition now
" defers calling generic_category() to avoid instantiating the object
" until it's actually needed.
" error_condition::failed and error_condition::message
" have been undeprecated, and operator
" bool()
" now once again returns failed().
" generic_category(), to avoid instantiating the object.
" default_error_condition
" changes in some cases into an error_condition
" from the generic category, instead of from the system category. This
" happens on POSIX when the input error_code
" is from the system category and does not correspond to any errc_t value.
" error_code
" and std::error_code has been improved substantially.
" It is now possible to construct boost::system::error_code
" from std::error_code, and it's possible to
" pass boost::system::error_code to functions taking
" std::error_code&.
" error_condition
" has been added.
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" Marshall Clow, Michael Caisse and Glen Fernandes managed this release. "
"source_location::to_string.
" <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>.
" boost::core::type_name, a utility function that
" returns the name of a type as a string.
" boost::span, a C++11 implementation of
" C++20's std::span (Glen Fernandes).
" has_describe_enumerators,
" has_describe_bases,
" has_describe_members.
" enum_to_string,
" enum_from_string.
" descriptor_by_name,
" descriptor_by_pointer.
" value_to
" and value_from.
" /Zc:implicitNoexcept- on MSVC.
" operator<< and operator>> when the first argument is
" a stream, to allow std::cout
" << _1.
" operator->*.
" first, second.
" constexpr
" versions of various standard library math routines.
" contains to
" key-based indices (issue #35).
" merge operations
" to key-based indices. The functionality goes beyond the standard
" specification for (unordered) associative containers in a number
" of ways, most notably:
" x.merge(y,first,last) merges only the elements of
" y within [first,last).
" splice
" for sequenced and random access indices were destructive, i.e. elements
" were copy-inserted into the destination and then erased from the
" source. Now, splice
" is based on node transfer much as merge
" in key-based indices, and has been similarly extended to accept source
" indices of any type: in fact, splice
" can be regarded as a frontend to the same functionality provided
" by merge in key-based
" indices. For reasons of backwards compatibility, the destructive
" behavior of splice
" has been retained in the case that the source and destination containers
" have unequal allocators.
" node_type and
" the position of the index in its multi_index_container,
" (except for hashed indices, where uniqueness/non-uniqueness is also
" a dependency). This has implications on the validity of iterators
" to elements transferred by merge
" or splice. This property
" is a variant of what has been called SCARY
" iterators in the C++ standard mailing lists. SCARYness is
" currently (August 2021) not mandated for standard containers.
" #include
" <memory> for inclusion of std::addressof
" boost::
" and BOOST_ prefixes
" error_code.
" error_code::to_string,
" error_condition::to_string, error_code::what.
" system_error::what()
" now contains the source location, if present.
" result<T, E = error_code>,
" a class holding either a value or an error, defined in <boost/system/result.hpp>.
" <boost/variant2.hpp>.
" unsafe_get<I>.
" visit_by_index.
" operator<<.
" " Boost's primary test compilers are: "
"" Marshall Clow, Michael Caisse and Glen Fernandes managed this release. "
"source_location().file_name()
" and source_location().function_name() now return ""
" instead of "(unknown)".
" source_location
" constructor from std::source_location.
" BOOST_CURRENT_LOCATION
" to more closely match the behavior of std::source_location::current(), such as being usable at top level
" or as a default function argument.
" BOOST_ATOMIC_NO_DARWIN_ULOCK
" configuration macro. The macto affects compilation on Darwin systems
" and disables ulock-based
" implementation of waiting and notifying operations. This may be useful
" to comply with Apple App Store requirements. (#55)
" boost::pointer_traits SFINAE friendly,
" addressing LWG3545. (Glen Fernandes)
" boost::allocator_traits that uses the
" individual allocator access traits. This implementation supports
" C++03 and above. (Glen Fernandes)
" boost/iterator.hpp is deprecated and will be removed
" in a future release. The header defines boost::iterator
" template, which is equivalent to std::iterator
" in <iterator> header. However, since std::iterator is itself deprecated in
" C++17, users are advised to remove boost::iterator
" or std::iterator use from their code.
" 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.
" BOOST_DESCRIBE_STRUCT
" and updated examples to check std::is_union<T>.
" fmtlib
" class formatter.
" fmtlib
" enum formatter.
" path::replace_extension
" now works in terms of v3 definition
" of path::extension rather than v4.
" path
" or compatible string type. (#223)
" fdopendir
" and O_NOFOLLOW and
" on Windows, remove_all
" is now protected against CVE-2022-21658.
" The vulnerability is a race condition that allows a third party process
" to replace a directory that is being concurrently processed by remove_all with a directory symlink
" and cause remove_all
" to follow the symlink and remove files in the linked directory instead
" of removing the symlink itself. (#224)
" remove
" and remove_all implementation,
" use POSIX semantics for file removal, when supported by the OS (Windows
" 10 1709 and later). When POSIX semantics is supported, the file name
" is removed from the filesystem namespace as soon as the file is marked
" for deletion, even if it is still open and in use. With legacy Windows
" semantics, the file name remains present in the the filesystem namespace
" until the last file handle to the file is closed, which allows the
" file marked for deletion to be opened and prevents creating new files
" with the same name. (#216)
" remove
" and remove_all now
" support deleting read-only directories. Support for removing read-only
" non-directory files was added previously.
" directory_iterator
" internal implementation has been reworked to better utilize modern
" Windows APIs, which may improve performance while handling symlinks.
" resize_file
" should no longer fail with an error if the file to be resized is
" opened.
" statx
" syscall on Android prior to 11.0 (API version 30). The syscall is
" blacklisted by seccomp and causes process termination in runtime.
" (#229)
" boost/filesystem/string_file.hpp
" header is deprecated and will be removed in a future release. The
" header is no longer included by boost/filesystem.hpp
" by default. Users are advised to implement the functionality themselves
" or migrate to other implementations.
" boost::io::basic_nullbuf, a null stream buffer,
" and boost::basic_onullstream, a null output
" stream (Glen Fernandes).
" counting_iterator,
" added support for built-in 128-bit integer types supported by gcc
" and clang and compatible compilers on some target platforms.
" counting_iterator.
" std::error_code overloads.
" boost::source_location to error_codes.
" text_file_backend,
" added support for appending to a previously written log file,
" when file rotation is used and log file names use file counters.
" file_collector interface
" has changed:
" scan_for_files
" method returns a scan_result
" structure that contains information collected during
" the scan;
" is_in_storage
" method added for testing if a path refers to a file within
" the target storage directory.
" invoke_manip
" stream manipulator that can be used for injecting user's function
" into a stream output expression.
" text_file_backend::scan_for_files multiple times,
" and the second and the following calls don't find any new files.
" (#179)
" count
" operations in ranked indices from O(log(n) + count)
" to O(log(n)).
" Contributed by Damian Sawicki.
" BOOST_USE_WINDOWS_H
" and WIN32_LEAN_AND_MEAN
" boost::nowide::stat
" with boost::nowide::stat_t
" boost::get_allocator_pointer to obtain
" the Allocator pointer from the result of boost::allocate_unique
" (Glen Fernandes).
" boost::source_location parameter to throw_exception_from_error.
" throw_exception_from_error
" overloads for errc::errc_t,
" std::error_code, std::errc,
" std::exception_ptr.
" result<T>::value now automatically supplies
" BOOST_CURRENT_LOCATION
" to throw_exception_from_error
" via a default argument.
" errc::make_error_code overload taking
" a source location.
" boost::throw_with_location, a more lightweight
" alternative of BOOST_THROW_EXCEPTION
" for programs that do not use Boost.Exception.
" count, equal_range
" and find.
" contains.
" erase_if has been
" implemented for all containers.
" erase and extract.
" reserve
" to eagerly allocate.
" boost::allocator_traits.
" operator<<
" for monostate.
" " Boost's primary test compilers are: "
"" Boost's additional test compilers include: "
"" TODO "
"http::message_generator: a type-erased
" buffers generator for http::message
" std::string_view
" by using boost::core::string_view (API change)
" span from Boost.Core
" (API change)
" static_string
" from Boost.StaticString (API change)
" ERROR_ACCESS_DENIED
" error. This may allow status
" and symlink_status
" to succeed for system files and directories that are not reparse
" points or symlinks. (#234)
" ERROR_INVALID_PARAMETER
" when querying file attributes. This affected status
" and symlink_status,
" which reported that files do not exist, and directory iterators,
" which failed to construct, as well as other dependent operations.
" (#236, #237)
" syslog_backend
" when IPv6 address is used for the syslog server. (#181)
" max_size_decor
" was used on a formatting stream, std::codecvt::do_length
" incorrectly accessed the input buffer and caused a buffer overflow.
" std::bind_back() and std::range_adaptor_closure
" for pre-C++23 code.
" closure
" and adaptor
" to make writing view adaptors easier, following the examples
" in P2387.
" error_code
" is converted to std::error_code
" and then back to error_code,
" the original is now restored, if possible.
" error_category
" to std::error_category to avoid the one-time
" allocation that shows up on leak checkers.
" error_code, and
" a corresponding assign.
" result.
" " Boost's primary test compilers are: "
"" Boost's primary test compilers are: "
"" Marshall Clow, Michael Caisse and Glen Fernandes managed this release. "
"buffers_generator
" beast::http::message_generator
" buffer_ref,
" so beast buffers can be used with asio.
" boost::hash
" have been removed; it now always calls hash_value.
" BOOST_HASH_NO_EXTENSIONS
" has been removed. The extensions are always enabled.
" std::forward_list and the unordered
" associative containers.
" begin() and end() member functions that return iterators)
" are now supported out of the box.
" BOOST_DESCRIBE_STRUCT or BOOST_DESCRIBE_CLASS) are now supported
" out of the box.
" hash_combine has
" been improved.
" boost::hash
" for strings now passes SMHasher in 64 bit mode.
" enumerators.hpp,
" bases.hpp, and members.hpp
" when the option -pedantic
" is used, the invocation of BOOST_DESCRIBE_ENUM
" has been moved from modifiers.hpp
" into a separate header, modifier_description.hpp.
" As a consequence, modifiers.hpp
" no longer includes enum.hpp.
" Code that has been relying on this implicit inclusion may fail, and
" will need to be fixed to include enum.hpp.
" -sICU_LINK_LOCALE
" & -sICU_LINK
" by fine-grained configuration options as done in Boost.RegEx
" std::auto_ptr
" codecvt
" using wchar_t on Windows
" assume/use UTF-16 enconding
" basic_format,
" date_time &
" hold_ptr movable,
" Fix use of format cache
" *this
" date_time
" BOOST_SYSTEM_DISABLE_THREADS
" can now be defined to disable the use of <mutex>
" (e.g. on single-threaded libstdc++).
" value_type,
" error_type, in_place_value, in_place_error
" to result<>.
" emplace to
" result<>.
" boost::unordered_flat_map
" and boost::unordered_flat_set based on open
" addressing.
" boost::json::value_from
" and boost::json::value_to.
" " Boost's primary test compilers are: "
"" Marshall Clow and Glen Fernandes managed this release. "
"