diff --git a/vendored/boost/config/stdlib/libcpp.hpp b/vendored/boost/config/stdlib/libcpp.hpp index 0e9f2445..777228fa 100644 --- a/vendored/boost/config/stdlib/libcpp.hpp +++ b/vendored/boost/config/stdlib/libcpp.hpp @@ -177,4 +177,9 @@ #endif #endif +#if _LIBCPP_VERSION <= 170006 +// no std::ranges::join_view +# define BOOST_NO_CXX20_HDR_RANGES +#endif + // --- end --- diff --git a/vendored/boost/container_hash/hash.hpp b/vendored/boost/container_hash/hash.hpp index 8305a22c..1fe3f2f9 100644 --- a/vendored/boost/container_hash/hash.hpp +++ b/vendored/boost/container_hash/hash.hpp @@ -1,5 +1,5 @@ // Copyright 2005-2014 Daniel James. -// Copyright 2021, 2022 Peter Dimov. +// Copyright 2021, 2022, 2025 Peter Dimov. // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt @@ -11,6 +11,7 @@ #define BOOST_FUNCTIONAL_HASH_HASH_HPP #include +#include #include #include #include @@ -557,19 +558,15 @@ namespace boost #endif - // boost::unordered::hash_is_avalanching + // hash_is_avalanching - namespace unordered - { - template struct hash_is_avalanching; - template struct hash_is_avalanching< boost::hash< std::basic_string > >: std::is_integral {}; + template struct hash_is_avalanching< boost::hash< std::basic_string > >: std::is_integral {}; #if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) - template struct hash_is_avalanching< boost::hash< std::basic_string_view > >: std::is_integral {}; + template struct hash_is_avalanching< boost::hash< std::basic_string_view > >: std::is_integral {}; #endif - } // namespace unordered } // namespace boost diff --git a/vendored/boost/container_hash/hash_fwd.hpp b/vendored/boost/container_hash/hash_fwd.hpp index 32388ac5..1f2a37a7 100644 --- a/vendored/boost/container_hash/hash_fwd.hpp +++ b/vendored/boost/container_hash/hash_fwd.hpp @@ -1,5 +1,5 @@ // Copyright 2005-2009 Daniel James. -// Copyright 2021, 2022 Peter Dimov. +// Copyright 2021, 2022, 2025 Peter Dimov. // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt @@ -32,6 +32,8 @@ template std::size_t hash_range( It, It ); template void hash_unordered_range( std::size_t&, It, It ); template std::size_t hash_unordered_range( It, It ); +template struct hash_is_avalanching; + } // namespace boost #endif // #ifndef BOOST_FUNCTIONAL_HASH_FWD_HPP diff --git a/vendored/boost/container_hash/hash_is_avalanching.hpp b/vendored/boost/container_hash/hash_is_avalanching.hpp new file mode 100644 index 00000000..fb6b748d --- /dev/null +++ b/vendored/boost/container_hash/hash_is_avalanching.hpp @@ -0,0 +1,57 @@ +// Copyright 2025 Joaquin M Lopez Munoz. +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_HASH_HASH_IS_AVALANCHING_HPP_INCLUDED +#define BOOST_HASH_HASH_IS_AVALANCHING_HPP_INCLUDED + +#include + +namespace boost +{ +namespace hash_detail +{ + +template struct make_void +{ + using type = void; +}; + +template using void_t = typename make_void::type; + +template struct avalanching_value +{ + static constexpr bool value = IsAvalanching::value; +}; + +// may be explicitly marked as BOOST_DEPRECATED in the future +template<> struct avalanching_value +{ + static constexpr bool value = true; +}; + +template struct hash_is_avalanching_impl: std::false_type +{ +}; + +template struct hash_is_avalanching_impl >: + std::integral_constant::value> +{ +}; + +template +struct hash_is_avalanching_impl::type> +{ + // Hash::is_avalanching is not a type: we don't define value to produce + // a compile error downstream +}; + +} // namespace hash_detail + +template struct hash_is_avalanching: hash_detail::hash_is_avalanching_impl::type +{ +}; + +} // namespace boost + +#endif // #ifndef BOOST_HASH_HASH_IS_AVALANCHING_HPP_INCLUDED diff --git a/vendored/boost/core/bit.hpp b/vendored/boost/core/bit.hpp index cebc8787..755ad401 100644 --- a/vendored/boost/core/bit.hpp +++ b/vendored/boost/core/bit.hpp @@ -15,8 +15,8 @@ // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt +#include #include -#include #include #include #include @@ -28,7 +28,7 @@ # pragma intrinsic(_BitScanForward) # pragma intrinsic(_BitScanReverse) -# if defined(_M_X64) +# if defined(_M_X64) || defined(_M_ARM64) # pragma intrinsic(_BitScanForward64) # pragma intrinsic(_BitScanReverse64) # endif @@ -80,7 +80,7 @@ BOOST_CONSTEXPR To bit_cast( From const & from ) BOOST_NOEXCEPT template To bit_cast( From const & from ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( sizeof(To) == sizeof(From) ); + BOOST_CORE_STATIC_ASSERT( sizeof(To) == sizeof(From) ); To to; std::memcpy( &to, &from, sizeof(To) ); @@ -126,7 +126,7 @@ BOOST_CONSTEXPR inline int countl_impl( boost::ulong_long_type x ) BOOST_NOEXCEP template BOOST_CONSTEXPR int countl_zero( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); return boost::core::detail::countl_impl( x ); } @@ -230,7 +230,7 @@ inline int countl_impl( boost::uint16_t x ) BOOST_NOEXCEPT #endif -#if defined(_MSC_VER) && defined(_M_X64) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) +#if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64)) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) BOOST_CXX14_CONSTEXPR inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT { @@ -255,7 +255,7 @@ BOOST_CXX14_CONSTEXPR inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT } } -#elif defined(_MSC_VER) && defined(_M_X64) +#elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64)) inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT { @@ -296,9 +296,9 @@ inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT template BOOST_CXX14_CONSTEXPR int countl_zero( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); - BOOST_STATIC_ASSERT( sizeof(T) == sizeof(boost::uint8_t) || sizeof(T) == sizeof(boost::uint16_t) || sizeof(T) == sizeof(boost::uint32_t) || sizeof(T) == sizeof(boost::uint64_t) ); + BOOST_CORE_STATIC_ASSERT( sizeof(T) == sizeof(boost::uint8_t) || sizeof(T) == sizeof(boost::uint16_t) || sizeof(T) == sizeof(boost::uint32_t) || sizeof(T) == sizeof(boost::uint64_t) ); BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint8_t) ) { @@ -323,7 +323,7 @@ BOOST_CXX14_CONSTEXPR int countl_zero( T x ) BOOST_NOEXCEPT template BOOST_CONSTEXPR int countl_one( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); return boost::core::countl_zero( static_cast( ~x ) ); } @@ -365,7 +365,7 @@ BOOST_CONSTEXPR inline int countr_impl( boost::ulong_long_type x ) BOOST_NOEXCEP template BOOST_CONSTEXPR int countr_zero( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); return boost::core::detail::countr_impl( x ); } @@ -455,7 +455,7 @@ inline int countr_impl( boost::uint16_t x ) BOOST_NOEXCEPT #endif -#if defined(_MSC_VER) && defined(_M_X64) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) +#if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64)) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) BOOST_CXX14_CONSTEXPR inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT { @@ -480,7 +480,7 @@ BOOST_CXX14_CONSTEXPR inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT } } -#elif defined(_MSC_VER) && defined(_M_X64) +#elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64)) inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT { @@ -521,9 +521,9 @@ inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT template BOOST_CXX14_CONSTEXPR int countr_zero( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); - BOOST_STATIC_ASSERT( sizeof(T) == sizeof(boost::uint8_t) || sizeof(T) == sizeof(boost::uint16_t) || sizeof(T) == sizeof(boost::uint32_t) || sizeof(T) == sizeof(boost::uint64_t) ); + BOOST_CORE_STATIC_ASSERT( sizeof(T) == sizeof(boost::uint8_t) || sizeof(T) == sizeof(boost::uint16_t) || sizeof(T) == sizeof(boost::uint32_t) || sizeof(T) == sizeof(boost::uint64_t) ); BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint8_t) ) { @@ -548,7 +548,7 @@ BOOST_CXX14_CONSTEXPR int countr_zero( T x ) BOOST_NOEXCEPT template BOOST_CONSTEXPR int countr_one( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); return boost::core::countr_zero( static_cast( ~x ) ); } @@ -598,7 +598,7 @@ BOOST_CORE_POPCOUNT_CONSTEXPR inline int popcount_impl( boost::ulong_long_type x template BOOST_CONSTEXPR int popcount( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); return boost::core::detail::popcount_impl( x ); } @@ -631,9 +631,9 @@ BOOST_CXX14_CONSTEXPR inline int popcount_impl( boost::uint64_t x ) BOOST_NOEXCE template BOOST_CXX14_CONSTEXPR int popcount( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); - BOOST_STATIC_ASSERT( sizeof(T) <= sizeof(boost::uint64_t) ); + BOOST_CORE_STATIC_ASSERT( sizeof(T) <= sizeof(boost::uint64_t) ); BOOST_IF_CONSTEXPR ( sizeof(T) <= sizeof(boost::uint32_t) ) { @@ -652,7 +652,7 @@ BOOST_CXX14_CONSTEXPR int popcount( T x ) BOOST_NOEXCEPT template BOOST_CXX14_CONSTEXPR T rotl( T x, int s ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); unsigned const mask = std::numeric_limits::digits - 1; return static_cast( x << (static_cast( s ) & mask) | x >> (static_cast( -s ) & mask) ); @@ -661,7 +661,7 @@ BOOST_CXX14_CONSTEXPR T rotl( T x, int s ) BOOST_NOEXCEPT template BOOST_CXX14_CONSTEXPR T rotr( T x, int s ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); unsigned const mask = std::numeric_limits::digits - 1; return static_cast( x >> (static_cast( s ) & mask) | x << (static_cast( -s ) & mask) ); @@ -672,7 +672,7 @@ BOOST_CXX14_CONSTEXPR T rotr( T x, int s ) BOOST_NOEXCEPT template BOOST_CONSTEXPR bool has_single_bit( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); return x != 0 && ( x & ( x - 1 ) ) == 0; } @@ -683,7 +683,7 @@ BOOST_CONSTEXPR bool has_single_bit( T x ) BOOST_NOEXCEPT template BOOST_CONSTEXPR int bit_width( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); return std::numeric_limits::digits - boost::core::countl_zero( x ); } @@ -691,7 +691,7 @@ BOOST_CONSTEXPR int bit_width( T x ) BOOST_NOEXCEPT template BOOST_CONSTEXPR T bit_floor( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); return x == 0? T(0): static_cast( T(1) << ( boost::core::bit_width( x ) - 1 ) ); } @@ -703,7 +703,7 @@ BOOST_CXX14_CONSTEXPR inline boost::uint32_t bit_ceil_impl( boost::uint32_t x ) { if( x == 0 ) { - return 0; + return 1; } --x; @@ -723,7 +723,7 @@ BOOST_CXX14_CONSTEXPR inline boost::uint64_t bit_ceil_impl( boost::uint64_t x ) { if( x == 0 ) { - return 0; + return 1; } --x; @@ -745,9 +745,9 @@ BOOST_CXX14_CONSTEXPR inline boost::uint64_t bit_ceil_impl( boost::uint64_t x ) template BOOST_CXX14_CONSTEXPR T bit_ceil( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); - BOOST_STATIC_ASSERT( sizeof(T) <= sizeof(boost::uint64_t) ); + BOOST_CORE_STATIC_ASSERT( sizeof(T) <= sizeof(boost::uint64_t) ); BOOST_IF_CONSTEXPR ( sizeof(T) <= sizeof(boost::uint32_t) ) { @@ -922,9 +922,9 @@ BOOST_CXX14_CONSTEXPR inline boost::uint64_t byteswap_impl( boost::uint64_t x ) template BOOST_CXX14_CONSTEXPR T byteswap( T x ) BOOST_NOEXCEPT { - BOOST_STATIC_ASSERT( std::numeric_limits::is_integer ); + BOOST_CORE_STATIC_ASSERT( std::numeric_limits::is_integer ); - BOOST_STATIC_ASSERT( sizeof(T) == sizeof(boost::uint8_t) || sizeof(T) == sizeof(boost::uint16_t) || sizeof(T) == sizeof(boost::uint32_t) || sizeof(T) == sizeof(boost::uint64_t) ); + BOOST_CORE_STATIC_ASSERT( sizeof(T) == sizeof(boost::uint8_t) || sizeof(T) == sizeof(boost::uint16_t) || sizeof(T) == sizeof(boost::uint32_t) || sizeof(T) == sizeof(boost::uint64_t) ); BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint8_t) ) { diff --git a/vendored/boost/core/detail/static_assert.hpp b/vendored/boost/core/detail/static_assert.hpp new file mode 100644 index 00000000..f62f7671 --- /dev/null +++ b/vendored/boost/core/detail/static_assert.hpp @@ -0,0 +1,42 @@ +#ifndef BOOST_CORE_DETAIL_STATIC_ASSERT_HPP_INCLUDED +#define BOOST_CORE_DETAIL_STATIC_ASSERT_HPP_INCLUDED + +// Copyright 2025 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#if defined(__cpp_static_assert) && __cpp_static_assert >= 200410L + +#define BOOST_CORE_STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__) + +#else + +#include +#include + +namespace boost +{ +namespace core +{ + +template struct STATIC_ASSERTION_FAILURE; + +template<> struct STATIC_ASSERTION_FAILURE +{ +}; + +template struct static_assert_test +{ +}; + +} // namespace core +} // namespace boost + +#define BOOST_CORE_STATIC_ASSERT(expr) \ + typedef ::boost::core::static_assert_test< \ + sizeof( ::boost::core::STATIC_ASSERTION_FAILURE<(expr)? true: false> ) \ + > BOOST_JOIN(boost_static_assert_typedef_,__LINE__) BOOST_ATTRIBUTE_UNUSED + +#endif + +#endif // #ifndef BOOST_CORE_DETAIL_STATIC_ASSERT_HPP_INCLUDED diff --git a/vendored/boost/describe/detail/config.hpp b/vendored/boost/describe/detail/config.hpp index c24a070e..30cb8d08 100644 --- a/vendored/boost/describe/detail/config.hpp +++ b/vendored/boost/describe/detail/config.hpp @@ -37,4 +37,12 @@ # define BOOST_DESCRIBE_MAYBE_UNUSED #endif +#if defined(__cpp_inline_variables) && __cpp_inline_variables >= 201606L +# define BOOST_DESCRIBE_INLINE_VARIABLE inline +#else +# define BOOST_DESCRIBE_INLINE_VARIABLE +#endif + +#define BOOST_DESCRIBE_INLINE_CONSTEXPR BOOST_DESCRIBE_INLINE_VARIABLE BOOST_DESCRIBE_CONSTEXPR_OR_CONST + #endif // #ifndef BOOST_DESCRIBE_DETAIL_CONFIG_HPP_INCLUDED diff --git a/vendored/boost/describe/modifiers.hpp b/vendored/boost/describe/modifiers.hpp index 06650ea1..d42e6b45 100644 --- a/vendored/boost/describe/modifiers.hpp +++ b/vendored/boost/describe/modifiers.hpp @@ -25,7 +25,7 @@ enum modifiers mod_hidden = 256 }; -BOOST_DESCRIBE_CONSTEXPR_OR_CONST modifiers mod_any_access = static_cast( mod_public | mod_protected | mod_private ); +BOOST_DESCRIBE_INLINE_CONSTEXPR modifiers mod_any_access = static_cast( mod_public | mod_protected | mod_private ); } // namespace describe } // namespace boost diff --git a/vendored/boost/detail/workaround.hpp b/vendored/boost/detail/workaround.hpp deleted file mode 100644 index 9c392182..00000000 --- a/vendored/boost/detail/workaround.hpp +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_WORKAROUND_DWA2002126_HPP -#define BOOST_WORKAROUND_DWA2002126_HPP - -#include - -#endif // BOOST_WORKAROUND_DWA2002126_HPP diff --git a/vendored/boost/mp11/algorithm.hpp b/vendored/boost/mp11/algorithm.hpp index dd39fbaa..07a8ffd8 100644 --- a/vendored/boost/mp11/algorithm.hpp +++ b/vendored/boost/mp11/algorithm.hpp @@ -970,7 +970,7 @@ template class L, class T1, class T2, class T3, class T4, cla } // namespace detail -template class F> using mp_reverse_fold = typename detail::mp_reverse_fold_impl::type; +template class F> using mp_reverse_fold = typename detail::mp_reverse_fold_impl, V, F>::type; template using mp_reverse_fold_q = mp_reverse_fold; // mp_unique diff --git a/vendored/boost/mp11/detail/mp_map_find.hpp b/vendored/boost/mp11/detail/mp_map_find.hpp index 2fb70d8e..035538ae 100644 --- a/vendored/boost/mp11/detail/mp_map_find.hpp +++ b/vendored/boost/mp11/detail/mp_map_find.hpp @@ -11,6 +11,14 @@ #include #include +#if BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, >= 140000 ) + +#include +#include +#include + +#endif + #if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1930 ) // not exactly good practice, but... @@ -26,6 +34,30 @@ namespace boost namespace mp11 { +#if BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, >= 140000 ) + +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120161 + +namespace detail +{ + +template struct mp_map_find_impl; + +template class M, class... T, class K> struct mp_map_find_impl, K> +{ + template using _f = mp_if, K>, mp_list, mp_list<>>; + + using _l = mp_append<_f..., mp_list>; + + using type = mp_front<_l>; +}; + +} // namespace detail + +template using mp_map_find = typename detail::mp_map_find_impl::type; + +#else + // mp_map_find namespace detail { @@ -81,6 +113,8 @@ template class M, class... T, class K> struct mp_map_find_imp template using mp_map_find = typename detail::mp_map_find_impl::type; +#endif + } // namespace mp11 } // namespace boost diff --git a/vendored/boost/mp11/version.hpp b/vendored/boost/mp11/version.hpp index 4c00cbd3..b898f237 100644 --- a/vendored/boost/mp11/version.hpp +++ b/vendored/boost/mp11/version.hpp @@ -11,6 +11,6 @@ // Same format as BOOST_VERSION: // major * 100000 + minor * 100 + patch -#define BOOST_MP11_VERSION 108800 +#define BOOST_MP11_VERSION 109000 #endif // #ifndef BOOST_MP11_VERSION_HPP_INCLUDED diff --git a/vendored/boost/static_assert.hpp b/vendored/boost/static_assert.hpp deleted file mode 100644 index d94ca807..00000000 --- a/vendored/boost/static_assert.hpp +++ /dev/null @@ -1,181 +0,0 @@ -// (C) Copyright John Maddock 2000. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/static_assert for documentation. - -/* - Revision history: - 02 August 2000 - Initial version. -*/ - -#ifndef BOOST_STATIC_ASSERT_HPP -#define BOOST_STATIC_ASSERT_HPP - -#include -#include -#include //for std::size_t - -#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) -// -// This is horrible, but it seems to be the only we can shut up the -// "anonymous variadic macros were introduced in C99 [-Wvariadic-macros]" -// warning that get spewed out otherwise in non-C++11 mode. -// -#pragma GCC system_header -#endif - -#ifndef BOOST_NO_CXX11_STATIC_ASSERT -# ifndef BOOST_NO_CXX11_VARIADIC_MACROS -# define BOOST_STATIC_ASSERT_MSG( ... ) static_assert(__VA_ARGS__) -# else -# define BOOST_STATIC_ASSERT_MSG( B, Msg ) static_assert( B, Msg ) -# endif -#else -# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B ) -#endif - -#ifdef BOOST_BORLANDC -// -// workaround for buggy integral-constant expression support: -#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS -#endif - -#if defined(__GNUC__) && (__GNUC__ == 3) && ((__GNUC_MINOR__ == 3) || (__GNUC_MINOR__ == 4)) -// gcc 3.3 and 3.4 don't produce good error messages with the default version: -# define BOOST_SA_GCC_WORKAROUND -#endif - -// -// If the compiler issues warnings about old C style casts, -// then enable this: -// -#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))) -# ifndef BOOST_NO_CXX11_VARIADIC_MACROS -# define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) ((__VA_ARGS__) != 0) -# else -# define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) != 0) -# endif -#else -# ifndef BOOST_NO_CXX11_VARIADIC_MACROS -# define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) (bool)(__VA_ARGS__) -# else -# define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x) -# endif -#endif - -#ifndef BOOST_NO_CXX11_STATIC_ASSERT -# ifndef BOOST_NO_CXX11_VARIADIC_MACROS -# define BOOST_STATIC_ASSERT( ... ) static_assert(__VA_ARGS__, #__VA_ARGS__) -# else -# define BOOST_STATIC_ASSERT( B ) static_assert(B, #B) -# endif -#else - -namespace boost{ - -// HP aCC cannot deal with missing names for template value parameters -template struct STATIC_ASSERTION_FAILURE; - -template <> struct STATIC_ASSERTION_FAILURE { enum { value = 1 }; }; - -// HP aCC cannot deal with missing names for template value parameters -template struct static_assert_test{}; - -} - -// -// Implicit instantiation requires that all member declarations be -// instantiated, but that the definitions are *not* instantiated. -// -// It's not particularly clear how this applies to enum's or typedefs; -// both are described as declarations [7.1.3] and [7.2] in the standard, -// however some compilers use "delayed evaluation" of one or more of -// these when implicitly instantiating templates. We use typedef declarations -// by default, but try defining BOOST_USE_ENUM_STATIC_ASSERT if the enum -// version gets better results from your compiler... -// -// Implementation: -// Both of these versions rely on sizeof(incomplete_type) generating an error -// message containing the name of the incomplete type. We use -// "STATIC_ASSERTION_FAILURE" as the type name here to generate -// an eye catching error message. The result of the sizeof expression is either -// used as an enum initialiser, or as a template argument depending which version -// is in use... -// Note that the argument to the assert is explicitly cast to bool using old- -// style casts: too many compilers currently have problems with static_cast -// when used inside integral constant expressions. -// -#if !defined(BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS) - -#if defined(BOOST_MSVC) && defined(BOOST_NO_CXX11_VARIADIC_MACROS) -#define BOOST_STATIC_ASSERT( B ) \ - typedef ::boost::static_assert_test<\ - sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST ( B ) >)>\ - BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__) -#elif defined(BOOST_MSVC) -#define BOOST_STATIC_ASSERT(...) \ - typedef ::boost::static_assert_test<\ - sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST (__VA_ARGS__) >)>\ - BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__) -#elif (defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND)) && defined(BOOST_NO_CXX11_VARIADIC_MACROS) -// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error -// instead of warning in case of failure -# define BOOST_STATIC_ASSERT( B ) \ - typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \ - [ ::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >::value ] -#elif (defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND)) && !defined(BOOST_NO_CXX11_VARIADIC_MACROS) -// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error -// instead of warning in case of failure -# define BOOST_STATIC_ASSERT(...) \ - typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \ - [ ::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >::value ] -#elif defined(__sgi) -// special version for SGI MIPSpro compiler -#define BOOST_STATIC_ASSERT( B ) \ - BOOST_STATIC_CONSTANT(bool, \ - BOOST_JOIN(boost_static_assert_test_, __LINE__) = ( B )); \ - typedef ::boost::static_assert_test<\ - sizeof(::boost::STATIC_ASSERTION_FAILURE< \ - BOOST_JOIN(boost_static_assert_test_, __LINE__) >)>\ - BOOST_JOIN(boost_static_assert_typedef_, __LINE__) -#elif BOOST_WORKAROUND(__MWERKS__, <= 0x3003) -// special version for CodeWarrior <= 8.x -#define BOOST_STATIC_ASSERT( B ) \ - BOOST_STATIC_CONSTANT(int, \ - BOOST_JOIN(boost_static_assert_test_, __LINE__) = \ - sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >) ) -#else -// generic version -# ifndef BOOST_NO_CXX11_VARIADIC_MACROS -# define BOOST_STATIC_ASSERT( ... ) \ - typedef ::boost::static_assert_test<\ - sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\ - BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_ATTRIBUTE_UNUSED -# else -# define BOOST_STATIC_ASSERT( B ) \ - typedef ::boost::static_assert_test<\ - sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >)>\ - BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_ATTRIBUTE_UNUSED -# endif -#endif - -#else -// alternative enum based implementation: -# ifndef BOOST_NO_CXX11_VARIADIC_MACROS -# define BOOST_STATIC_ASSERT( ... ) \ - enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \ - = sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( __VA_ARGS__ ) >) } -# else -# define BOOST_STATIC_ASSERT(B) \ - enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \ - = sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) } -# endif -#endif -#endif // defined(BOOST_NO_CXX11_STATIC_ASSERT) - -#endif // BOOST_STATIC_ASSERT_HPP - - diff --git a/vendored/boost/unordered/detail/foa/core.hpp b/vendored/boost/unordered/detail/foa/core.hpp index 062b7112..38d50e68 100644 --- a/vendored/boost/unordered/detail/foa/core.hpp +++ b/vendored/boost/unordered/detail/foa/core.hpp @@ -1,6 +1,6 @@ /* Common base for Boost.Unordered open-addressing tables. * - * Copyright 2022-2024 Joaquin M Lopez Munoz. + * Copyright 2022-2025 Joaquin M Lopez Munoz. * Copyright 2023 Christian Mazakas. * Copyright 2024 Braden Ganetsky. * Distributed under the Boost Software License, Version 1.0. @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -28,8 +29,7 @@ #include #include #include -#include -#include +#include #include #include #include @@ -923,6 +923,8 @@ inline unsigned int unchecked_countr_zero(int x) unsigned long r; _BitScanForward(&r,(unsigned long)x); return (unsigned int)r; +#elif defined(BOOST_GCC)||defined(BOOST_CLANG) + return (unsigned int)__builtin_ctz((unsigned int)x); #else BOOST_UNORDERED_ASSUME(x!=0); return (unsigned int)boost::core::countr_zero((unsigned int)x); @@ -1426,7 +1428,7 @@ public: using size_policy=pow2_size_policy; using prober=pow2_quadratic_prober; using mix_policy=typename std::conditional< - hash_is_avalanching::value, + boost::hash_is_avalanching::value, no_mix, mulx_mix >::type; diff --git a/vendored/boost/unordered/unordered_printers.hpp b/vendored/boost/unordered/detail/unordered_printers.hpp similarity index 89% rename from vendored/boost/unordered/unordered_printers.hpp rename to vendored/boost/unordered/detail/unordered_printers.hpp index a7d0d137..0bb03847 100644 --- a/vendored/boost/unordered/unordered_printers.hpp +++ b/vendored/boost/unordered/detail/unordered_printers.hpp @@ -1,11 +1,11 @@ -// Copyright 2024 Braden Ganetsky +// Copyright 2024-2025 Braden Ganetsky // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt -// Generated on 2024-08-25T17:48:54 +// Generated on 2025-08-21T03:09:19 -#ifndef BOOST_UNORDERED_UNORDERED_PRINTERS_HPP -#define BOOST_UNORDERED_UNORDERED_PRINTERS_HPP +#ifndef BOOST_UNORDERED_DETAIL_UNORDERED_PRINTERS_HPP +#define BOOST_UNORDERED_DETAIL_UNORDERED_PRINTERS_HPP #ifndef BOOST_ALL_NO_EMBEDDED_GDB_SCRIPTS #if defined(__ELF__) @@ -14,7 +14,7 @@ #pragma clang diagnostic ignored "-Woverlength-strings" #endif __asm__(".pushsection \".debug_gdb_scripts\", \"MS\",%progbits,1\n" - ".ascii \"\\4gdb.inlined-script.BOOST_UNORDERED_UNORDERED_PRINTERS_HPP\\n\"\n" + ".ascii \"\\4gdb.inlined-script.BOOST_UNORDERED_DETAIL_UNORDERED_PRINTERS_HPP\\n\"\n" ".ascii \"import gdb.printing\\n\"\n" ".ascii \"import gdb.xmethod\\n\"\n" ".ascii \"import re\\n\"\n" @@ -58,14 +58,15 @@ __asm__(".pushsection \".debug_gdb_scripts\", \"MS\",%progbits,1\n" ".ascii \"class BoostUnorderedFcaPrinter:\\n\"\n" ".ascii \" def __init__(self, val):\\n\"\n" - ".ascii \" self.val = BoostUnorderedHelpers.maybe_unwrap_reference(val)\\n\"\n" - ".ascii \" self.name = f\\\"{self.val.type.strip_typedefs()}\\\".split(\\\"<\\\")[0]\\n\"\n" + ".ascii \" val = BoostUnorderedHelpers.maybe_unwrap_reference(val)\\n\"\n" + ".ascii \" self.table = val[\\\"table_\\\"]\\n\"\n" + ".ascii \" self.name = f\\\"{val.type.strip_typedefs()}\\\".split(\\\"<\\\")[0]\\n\"\n" ".ascii \" self.name = self.name.replace(\\\"boost::unordered::\\\", \\\"boost::\\\")\\n\"\n" ".ascii \" self.is_map = self.name.endswith(\\\"map\\\")\\n\"\n" - ".ascii \" self.cpo = BoostUnorderedPointerCustomizationPoint(self.val[\\\"table_\\\"][\\\"buckets_\\\"][\\\"buckets\\\"])\\n\"\n" + ".ascii \" self.cpo = BoostUnorderedPointerCustomizationPoint(self.table[\\\"buckets_\\\"][\\\"buckets\\\"])\\n\"\n" ".ascii \" def to_string(self):\\n\"\n" - ".ascii \" size = self.val[\\\"table_\\\"][\\\"size_\\\"]\\n\"\n" + ".ascii \" size = self.table[\\\"size_\\\"]\\n\"\n" ".ascii \" return f\\\"{self.name} with {size} elements\\\"\\n\"\n" ".ascii \" def display_hint(self):\\n\"\n" @@ -73,7 +74,7 @@ __asm__(".pushsection \".debug_gdb_scripts\", \"MS\",%progbits,1\n" ".ascii \" def children(self):\\n\"\n" ".ascii \" def generator():\\n\"\n" - ".ascii \" grouped_buckets = self.val[\\\"table_\\\"][\\\"buckets_\\\"]\\n\"\n" + ".ascii \" grouped_buckets = self.table[\\\"buckets_\\\"]\\n\"\n" ".ascii \" size = grouped_buckets[\\\"size_\\\"]\\n\"\n" ".ascii \" buckets = grouped_buckets[\\\"buckets\\\"]\\n\"\n" @@ -167,14 +168,20 @@ __asm__(".pushsection \".debug_gdb_scripts\", \"MS\",%progbits,1\n" ".ascii \"class BoostUnorderedFoaPrinter:\\n\"\n" ".ascii \" def __init__(self, val):\\n\"\n" - ".ascii \" self.val = BoostUnorderedHelpers.maybe_unwrap_reference(val)\\n\"\n" - ".ascii \" self.name = f\\\"{self.val.type.strip_typedefs()}\\\".split(\\\"<\\\")[0]\\n\"\n" + ".ascii \" val = BoostUnorderedHelpers.maybe_unwrap_reference(val)\\n\"\n" + ".ascii \" self.table = val[\\\"table_\\\"]\\n\"\n" + ".ascii \" self.name = f\\\"{val.type.strip_typedefs()}\\\".split(\\\"<\\\")[0]\\n\"\n" ".ascii \" self.name = self.name.replace(\\\"boost::unordered::\\\", \\\"boost::\\\")\\n\"\n" ".ascii \" self.is_map = self.name.endswith(\\\"map\\\")\\n\"\n" - ".ascii \" self.cpo = BoostUnorderedPointerCustomizationPoint(self.val[\\\"table_\\\"][\\\"arrays\\\"][\\\"groups_\\\"])\\n\"\n" + ".ascii \" self.cpo = BoostUnorderedPointerCustomizationPoint(self.table[\\\"arrays\\\"][\\\"groups_\\\"])\\n\"\n" + ".ascii \" self.groups = self.cpo.to_address(self.table[\\\"arrays\\\"][\\\"groups_\\\"])\\n\"\n" + ".ascii \" self.elements = self.cpo.to_address(self.table[\\\"arrays\\\"][\\\"elements_\\\"])\\n\"\n" + + ".ascii \" self.N = 15 # `self.groups.dereference()[\\\"N\\\"]` may be optimized out\\n\"\n" + ".ascii \" self.sentinel_ = 1 # `self.groups.dereference()[\\\"sentinel_\\\"]` may be optimized out\\n\"\n" ".ascii \" def to_string(self):\\n\"\n" - ".ascii \" size = BoostUnorderedHelpers.maybe_unwrap_atomic(self.val[\\\"table_\\\"][\\\"size_ctrl\\\"][\\\"size\\\"])\\n\"\n" + ".ascii \" size = BoostUnorderedHelpers.maybe_unwrap_atomic(self.table[\\\"size_ctrl\\\"][\\\"size\\\"])\\n\"\n" ".ascii \" return f\\\"{self.name} with {size} elements\\\"\\n\"\n" ".ascii \" def display_hint(self):\\n\"\n" @@ -204,30 +211,21 @@ __asm__(".pushsection \".debug_gdb_scripts\", \"MS\",%progbits,1\n" ".ascii \" m = group[\\\"m\\\"]\\n\"\n" ".ascii \" at = lambda b: BoostUnorderedHelpers.maybe_unwrap_atomic(m[b][\\\"n\\\"])\\n\"\n" - ".ascii \" N = group[\\\"N\\\"]\\n\"\n" - ".ascii \" sentinel_ = group[\\\"sentinel_\\\"]\\n\"\n" ".ascii \" if self.is_regular_layout(group):\\n\"\n" - ".ascii \" return pos == N-1 and at(N-1) == sentinel_\\n\"\n" + ".ascii \" return pos == self.N-1 and at(self.N-1) == self.sentinel_\\n\"\n" ".ascii \" else:\\n\"\n" - ".ascii \" return pos == N-1 and (at(0) & 0x4000400040004000) == 0x4000 and (at(1) & 0x4000400040004000) == 0\\n\"\n" + ".ascii \" return pos == self.N-1 and (at(0) & 0x4000400040004000) == 0x4000 and (at(1) & 0x4000400040004000) == 0\\n\"\n" ".ascii \" def children(self):\\n\"\n" ".ascii \" def generator():\\n\"\n" - ".ascii \" table = self.val[\\\"table_\\\"]\\n\"\n" - ".ascii \" groups = self.cpo.to_address(table[\\\"arrays\\\"][\\\"groups_\\\"])\\n\"\n" - ".ascii \" elements = self.cpo.to_address(table[\\\"arrays\\\"][\\\"elements_\\\"])\\n\"\n" - - ".ascii \" pc_ = groups.cast(gdb.lookup_type(\\\"unsigned char\\\").pointer())\\n\"\n" - ".ascii \" p_ = elements\\n\"\n" + ".ascii \" pc_ = self.groups.cast(gdb.lookup_type(\\\"unsigned char\\\").pointer())\\n\"\n" + ".ascii \" p_ = self.elements\\n\"\n" ".ascii \" first_time = True\\n\"\n" - ".ascii \" mask = 0\\n\"\n" - ".ascii \" n0 = 0\\n\"\n" - ".ascii \" n = 0\\n\"\n" ".ascii \" count = 0\\n\"\n" ".ascii \" while p_ != 0:\\n\"\n" ".ascii \" # This if block mirrors the condition in the begin() call\\n\"\n" - ".ascii \" if (not first_time) or (self.match_occupied(groups.dereference()) & 1):\\n\"\n" + ".ascii \" if (not first_time) or (self.match_occupied(self.groups.dereference()) & 1):\\n\"\n" ".ascii \" pointer = BoostUnorderedHelpers.maybe_unwrap_foa_element(p_)\\n\"\n" ".ascii \" value = self.cpo.to_address(pointer).dereference()\\n\"\n" ".ascii \" if self.is_map:\\n\"\n" @@ -241,17 +239,17 @@ __asm__(".pushsection \".debug_gdb_scripts\", \"MS\",%progbits,1\n" ".ascii \" count += 1\\n\"\n" ".ascii \" first_time = False\\n\"\n" - ".ascii \" n0 = pc_.cast(gdb.lookup_type(\\\"uintptr_t\\\")) % groups.dereference().type.sizeof\\n\"\n" + ".ascii \" n0 = pc_.cast(gdb.lookup_type(\\\"uintptr_t\\\")) % self.groups.dereference().type.sizeof\\n\"\n" ".ascii \" pc_ = self.cpo.next(pc_, -n0)\\n\"\n" - ".ascii \" mask = (self.match_occupied(pc_.cast(groups.type).dereference()) >> (n0+1)) << (n0+1)\\n\"\n" + ".ascii \" mask = (self.match_occupied(pc_.cast(self.groups.type).dereference()) >> (n0+1)) << (n0+1)\\n\"\n" ".ascii \" while mask == 0:\\n\"\n" - ".ascii \" pc_ = self.cpo.next(pc_, groups.dereference().type.sizeof)\\n\"\n" - ".ascii \" p_ = self.cpo.next(p_, groups.dereference()[\\\"N\\\"])\\n\"\n" - ".ascii \" mask = self.match_occupied(pc_.cast(groups.type).dereference())\\n\"\n" + ".ascii \" pc_ = self.cpo.next(pc_, self.groups.dereference().type.sizeof)\\n\"\n" + ".ascii \" p_ = self.cpo.next(p_, self.N)\\n\"\n" + ".ascii \" mask = self.match_occupied(pc_.cast(self.groups.type).dereference())\\n\"\n" ".ascii \" n = BoostUnorderedHelpers.countr_zero(mask)\\n\"\n" - ".ascii \" if self.is_sentinel(pc_.cast(groups.type).dereference(), n):\\n\"\n" + ".ascii \" if self.is_sentinel(pc_.cast(self.groups.type).dereference(), n):\\n\"\n" ".ascii \" p_ = 0\\n\"\n" ".ascii \" else:\\n\"\n" ".ascii \" pc_ = self.cpo.next(pc_, n)\\n\"\n" @@ -411,4 +409,4 @@ __asm__(".pushsection \".debug_gdb_scripts\", \"MS\",%progbits,1\n" #endif // defined(__ELF__) #endif // !defined(BOOST_ALL_NO_EMBEDDED_GDB_SCRIPTS) -#endif // !defined(BOOST_UNORDERED_UNORDERED_PRINTERS_HPP) +#endif // !defined(BOOST_UNORDERED_DETAIL_UNORDERED_PRINTERS_HPP) diff --git a/vendored/boost/unordered/hash_traits.hpp b/vendored/boost/unordered/hash_traits.hpp deleted file mode 100644 index 5e2b1af0..00000000 --- a/vendored/boost/unordered/hash_traits.hpp +++ /dev/null @@ -1,70 +0,0 @@ -/* Hash function characterization. - * - * Copyright 2022-2024 Joaquin M Lopez Munoz. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - * - * See https://www.boost.org/libs/unordered for library home page. - */ - -#ifndef BOOST_UNORDERED_HASH_TRAITS_HPP -#define BOOST_UNORDERED_HASH_TRAITS_HPP - -#include - -namespace boost{ -namespace unordered{ - -namespace detail{ - -template -struct hash_is_avalanching_impl:std::false_type{}; - -template -struct avalanching_value -{ - static constexpr bool value=IsAvalanching::value; -}; - -/* may be explicitly marked as BOOST_DEPRECATED in the future */ -template<> struct avalanching_value -{ - static constexpr bool value=true; -}; - -template -struct hash_is_avalanching_impl< - Hash, - boost::unordered::detail::void_t ->:std::integral_constant< - bool, - avalanching_value::value ->{}; - -template -struct hash_is_avalanching_impl< - Hash, - typename std::enable_if<((void)Hash::is_avalanching,true)>::type ->{}; /* Hash::is_avalanching is not a type: compile error downstream */ - -} /* namespace detail */ - -/* Each trait can be partially specialized by users for concrete hash functions - * when actual characterization differs from default. - */ - -/* hash_is_avalanching::value is: - * - false if Hash::is_avalanching is not present. - * - Hash::is_avalanching::value if this is present and constexpr-convertible - * to a bool. - * - true if Hash::is_avalanching is void (deprecated). - * - ill-formed otherwise. - */ -template -struct hash_is_avalanching: detail::hash_is_avalanching_impl::type{}; - -} /* namespace unordered */ -} /* namespace boost */ - -#endif diff --git a/vendored/boost/version.hpp b/vendored/boost/version.hpp index 606b4268..918c03dd 100644 --- a/vendored/boost/version.hpp +++ b/vendored/boost/version.hpp @@ -19,7 +19,7 @@ // BOOST_VERSION / 100 % 1000 is the minor version // BOOST_VERSION / 100000 is the major version -#define BOOST_VERSION 108800 +#define BOOST_VERSION 109000 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,6 +27,6 @@ // number, y is the minor version number, and z is the patch level if not 0. // This is used by to select which library version to link to. -#define BOOST_LIB_VERSION "1_88" +#define BOOST_LIB_VERSION "1_90" #endif