diff options
| author | robot-contrib <[email protected]> | 2025-08-28 10:52:58 +0300 |
|---|---|---|
| committer | robot-contrib <[email protected]> | 2025-08-28 11:48:01 +0300 |
| commit | 570809564ed893effc57405668c9c694198132d0 (patch) | |
| tree | 7f3e85628eca3af584f5e43435d254d42636ef7d | |
| parent | fa5404828d05be5757b2a70e25b4be1c6f7bcf60 (diff) | |
Update contrib/restricted/boost/type_traits to 1.89.0
commit_hash:77c9f57ed2b96e7181db9214e69194abdfb16db5
4 files changed, 43 insertions, 20 deletions
diff --git a/contrib/restricted/boost/type_traits/.yandex_meta/default.nix b/contrib/restricted/boost/type_traits/.yandex_meta/default.nix index feeda15df74..278c6dbb863 100644 --- a/contrib/restricted/boost/type_traits/.yandex_meta/default.nix +++ b/contrib/restricted/boost/type_traits/.yandex_meta/default.nix @@ -1,13 +1,13 @@ self: super: with self; { boost_type_traits = stdenv.mkDerivation rec { pname = "boost_type_traits"; - version = "1.88.0"; + version = "1.89.0"; src = fetchFromGitHub { owner = "boostorg"; repo = "type_traits"; rev = "boost-${version}"; - hash = "sha256-kunJMhryv/tq+bsX4gNVYFkkQfF5MJtIzw/sCgdbyqw="; + hash = "sha256-OH9x0V8WzASXYFwIPs3RAA4O1JD4dEm5wEjndpAM0T4="; }; }; } diff --git a/contrib/restricted/boost/type_traits/include/boost/type_traits/integral_constant.hpp b/contrib/restricted/boost/type_traits/include/boost/type_traits/integral_constant.hpp index 2592bcb95db..7424c86d36b 100644 --- a/contrib/restricted/boost/type_traits/include/boost/type_traits/integral_constant.hpp +++ b/contrib/restricted/boost/type_traits/include/boost/type_traits/integral_constant.hpp @@ -60,10 +60,11 @@ namespace boost{ operator const mpl::integral_c<T, val>& ()const { static const char data[sizeof(long)] = { 0 }; - static const void* pdata = data; - return *(reinterpret_cast<const mpl::integral_c<T, val>*>(pdata)); + const void* const pdata = data; + return *static_cast<const mpl::integral_c<T, val>*>(pdata); } - BOOST_CONSTEXPR operator T()const { return val; } + BOOST_CONSTEXPR operator T()const BOOST_NOEXCEPT { return val; } + BOOST_CONSTEXPR T operator()()const BOOST_NOEXCEPT { return val; } }; template <class T, T val> @@ -80,10 +81,11 @@ namespace boost{ operator const mpl::bool_<val>& ()const { static const char data[sizeof(long)] = { 0 }; - static const void* pdata = data; - return *(reinterpret_cast<const mpl::bool_<val>*>(pdata)); + const void* const pdata = data; + return *static_cast<const mpl::bool_<val>*>(pdata); } - BOOST_CONSTEXPR operator bool()const { return val; } + BOOST_CONSTEXPR operator bool()const BOOST_NOEXCEPT { return val; } + BOOST_CONSTEXPR bool operator()()const BOOST_NOEXCEPT { return val; } }; template <bool val> diff --git a/contrib/restricted/boost/type_traits/include/boost/type_traits/is_complete.hpp b/contrib/restricted/boost/type_traits/include/boost/type_traits/is_complete.hpp index 08f0e6277ab..428edf11375 100644 --- a/contrib/restricted/boost/type_traits/include/boost/type_traits/is_complete.hpp +++ b/contrib/restricted/boost/type_traits/include/boost/type_traits/is_complete.hpp @@ -27,11 +27,10 @@ * DO NOT MAKE GENERAL USE OF THIS TRAIT, AS THE COMPLETENESS OF A TYPE * VARIES ACROSS TRANSLATION UNITS AS WELL AS WITHIN A SINGLE UNIT. * -*/ + */ namespace boost { - // // We will undef this if the trait isn't fully functional: // @@ -39,7 +38,7 @@ namespace boost { #if !defined(BOOST_NO_SFINAE_EXPR) && !BOOST_WORKAROUND(BOOST_MSVC, <= 1900) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40600) - namespace detail{ + namespace detail { template <std::size_t N> struct ok_tag { double d; char c[N]; }; @@ -48,15 +47,15 @@ namespace boost { ok_tag<sizeof(T)> check_is_complete(int); template <class T> char check_is_complete(...); - } + + } // namespace detail template <class T> struct is_complete : public integral_constant<bool, ::boost::is_function<typename boost::remove_reference<T>::type>::value || (sizeof(boost::detail::check_is_complete<T>(0)) != sizeof(char))> {}; #elif !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500) - namespace detail - { + namespace detail { template <class T> struct is_complete_imp @@ -70,7 +69,7 @@ namespace boost { static const bool value = sizeof(check<T>(0)) == sizeof(type_traits::yes_type); }; -} // namespace detail + } // namespace detail template <class T> @@ -78,11 +77,33 @@ namespace boost { {}; template <class T> struct is_complete<T&> : boost::is_complete<T> {}; - + #else - template <class T> struct is_complete - : public boost::integral_constant<bool, true> {}; + namespace detail { + + template <class T> + struct is_complete_impl : public boost::true_type {}; + + template < > + struct is_complete_impl<void> : public boost::false_type {}; + + template <class T> + struct is_complete_impl<T[]> : public boost::false_type {}; + + template <class T> + struct is_complete_impl<T&> : public is_complete_impl<T>::type {}; + + } // namespace detail + + template <class T> + struct is_complete : public detail::is_complete_impl<T>::type {}; + template <class T> + struct is_complete<const T> : public detail::is_complete_impl<T>::type {}; + template <class T> + struct is_complete<volatile T> : public detail::is_complete_impl<T>::type {}; + template <class T> + struct is_complete<const volatile T> : public detail::is_complete_impl<T>::type {}; #undef BOOST_TT_HAS_WORKING_IS_COMPLETE diff --git a/contrib/restricted/boost/type_traits/ya.make b/contrib/restricted/boost/type_traits/ya.make index 2d21593debf..976aff8e78d 100644 --- a/contrib/restricted/boost/type_traits/ya.make +++ b/contrib/restricted/boost/type_traits/ya.make @@ -6,9 +6,9 @@ LICENSE(BSL-1.0) LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.88.0) +VERSION(1.89.0) -ORIGINAL_SOURCE(https://github.com/boostorg/type_traits/archive/boost-1.88.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/type_traits/archive/boost-1.89.0.tar.gz) PEERDIR( contrib/restricted/boost/config |
