diff options
author | robot-contrib <robot-contrib@yandex-team.com> | 2022-08-07 00:06:44 +0300 |
---|---|---|
committer | robot-contrib <robot-contrib@yandex-team.com> | 2022-08-07 00:06:44 +0300 |
commit | 67b6e12f2297ad3c0127aa42721b8f798f496c13 (patch) | |
tree | 569e277876ebcd73d4c9f80366d3ac422a6f4c62 | |
parent | 4535a1bf240da81a775d25fd3f152020f96a5b63 (diff) | |
download | ydb-67b6e12f2297ad3c0127aa42721b8f798f496c13.tar.gz |
Update contrib/restricted/boost/tuple to 1.79.0
-rw-r--r-- | contrib/restricted/boost/tuple/include/boost/tuple/detail/tuple_basic.hpp | 56 | ||||
-rw-r--r-- | contrib/restricted/boost/tuple/include/boost/tuple/tuple.hpp | 51 |
2 files changed, 80 insertions, 27 deletions
diff --git a/contrib/restricted/boost/tuple/include/boost/tuple/detail/tuple_basic.hpp b/contrib/restricted/boost/tuple/include/boost/tuple/detail/tuple_basic.hpp index 1ed421660ef..96fb5bde1ac 100644 --- a/contrib/restricted/boost/tuple/include/boost/tuple/detail/tuple_basic.hpp +++ b/contrib/restricted/boost/tuple/include/boost/tuple/detail/tuple_basic.hpp @@ -34,9 +34,11 @@ #include <utility> // needed for the assignment from pair to tuple +#include <cstddef> // for std::size_t #include <boost/type_traits/cv_traits.hpp> #include <boost/type_traits/function_traits.hpp> +#include <boost/type_traits/integral_constant.hpp> #include <boost/utility/swap.hpp> #include <boost/detail/workaround.hpp> // needed for BOOST_WORKAROUND @@ -92,7 +94,7 @@ namespace detail { template<class T> class generate_error; -template<int N> +template<std::size_t N> struct drop_front { template<class Tuple> struct apply { @@ -126,21 +128,21 @@ struct drop_front<0> { #ifndef BOOST_NO_CV_SPECIALIZATIONS -template<int N, class T> +template<std::size_t N, class T> struct element { typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE apply<T>::type::head_type type; }; -template<int N, class T> +template<std::size_t N, class T> struct element<N, const T> { private: typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE apply<T>::type::head_type unqualified_type; public: -#if BOOST_WORKAROUND(__BORLANDC__,<0x600) +#if BOOST_WORKAROUND(BOOST_BORLANDC,<0x600) typedef const unqualified_type type; #else typedef BOOST_DEDUCED_TYPENAME boost::add_const<unqualified_type>::type type; @@ -150,14 +152,14 @@ public: namespace detail { -template<int N, class T, bool IsConst> +template<std::size_t N, class T, bool IsConst> struct element_impl { typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE apply<T>::type::head_type type; }; -template<int N, class T> +template<std::size_t N, class T> struct element_impl<N, T, true /* IsConst */> { typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE @@ -168,7 +170,7 @@ struct element_impl<N, T, true /* IsConst */> } // end of namespace detail -template<int N, class T> +template<std::size_t N, class T> struct element: public detail::element_impl<N, T, ::boost::is_const<T>::value> { @@ -209,7 +211,7 @@ template <class T> struct access_traits<T&> { // get function for non-const cons-lists, returns a reference to the element -template<int N, class HT, class TT> +template<std::size_t N, class HT, class TT> inline typename access_traits< typename element<N, cons<HT, TT> >::type >::non_const_type @@ -223,7 +225,7 @@ get(cons<HT, TT>& c) { // get function for const cons-lists, returns a const reference to // the element. If the element is a reference, returns the reference // as such (that is, can return a non-const reference) -template<int N, class HT, class TT> +template<std::size_t N, class HT, class TT> inline typename access_traits< typename element<N, cons<HT, TT> >::type >::const_type @@ -332,7 +334,7 @@ struct cons { } // get member functions (non-const and const) - template <int N> + template <std::size_t N> typename access_traits< typename element<N, cons<HT, TT> >::type >::non_const_type @@ -340,7 +342,7 @@ struct cons { return boost::tuples::get<N>(*this); // delegate to non-member get } - template <int N> + template <std::size_t N> typename access_traits< typename element<N, cons<HT, TT> >::type >::const_type @@ -402,7 +404,7 @@ struct cons<HT, null_type> { // is illformed if HT is a reference cons& operator=(const cons& u) { head = u.head; return *this; } - template <int N> + template <std::size_t N> typename access_traits< typename element<N, self_type>::type >::non_const_type @@ -410,7 +412,7 @@ struct cons<HT, null_type> { return boost::tuples::get<N>(*this); } - template <int N> + template <std::size_t N> typename access_traits< typename element<N, self_type>::type >::const_type @@ -423,28 +425,28 @@ struct cons<HT, null_type> { // templates for finding out the length of the tuple ------------------- template<class T> -struct length { - BOOST_STATIC_CONSTANT(int, value = 1 + length<typename T::tail_type>::value); +struct length: boost::integral_constant<std::size_t, 1 + length<typename T::tail_type>::value> +{ }; template<> -struct length<tuple<> > { - BOOST_STATIC_CONSTANT(int, value = 0); +struct length<tuple<> >: boost::integral_constant<std::size_t, 0> +{ }; template<> -struct length<tuple<> const> { - BOOST_STATIC_CONSTANT(int, value = 0); +struct length<tuple<> const>: boost::integral_constant<std::size_t, 0> +{ }; template<> -struct length<null_type> { - BOOST_STATIC_CONSTANT(int, value = 0); +struct length<null_type>: boost::integral_constant<std::size_t, 0> +{ }; template<> -struct length<null_type const> { - BOOST_STATIC_CONSTANT(int, value = 0); +struct length<null_type const>: boost::integral_constant<std::size_t, 0> +{ }; namespace detail { @@ -675,20 +677,20 @@ struct make_tuple_traits<T&> { // All arrays are converted to const. This is because make_tuple takes its // parameters as const T& and thus the knowledge of the potential // non-constness of actual argument is lost. -template<class T, int n> struct make_tuple_traits <T[n]> { +template<class T, std::size_t n> struct make_tuple_traits <T[n]> { typedef const T (&type)[n]; }; -template<class T, int n> +template<class T, std::size_t n> struct make_tuple_traits<const T[n]> { typedef const T (&type)[n]; }; -template<class T, int n> struct make_tuple_traits<volatile T[n]> { +template<class T, std::size_t n> struct make_tuple_traits<volatile T[n]> { typedef const volatile T (&type)[n]; }; -template<class T, int n> +template<class T, std::size_t n> struct make_tuple_traits<const volatile T[n]> { typedef const volatile T (&type)[n]; }; diff --git a/contrib/restricted/boost/tuple/include/boost/tuple/tuple.hpp b/contrib/restricted/boost/tuple/include/boost/tuple/tuple.hpp index d71e7df0afe..4e34b6c8d4c 100644 --- a/contrib/restricted/boost/tuple/include/boost/tuple/tuple.hpp +++ b/contrib/restricted/boost/tuple/include/boost/tuple/tuple.hpp @@ -63,5 +63,56 @@ get(const tuples::cons<HT, TT>& c) { } // end namespace boost +#if !defined(BOOST_NO_CXX11_HDR_TUPLE) + +#include <tuple> +#include <cstddef> + +namespace std +{ + +#if defined(BOOST_CLANG) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wmismatched-tags" +#endif + +// std::tuple_size + +template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10> + class tuple_size< boost::tuples::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >: + public boost::tuples::length< boost::tuples::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> > +{ +}; + +template<class H, class T> class tuple_size< boost::tuples::cons<H, T> >: + public boost::tuples::length< boost::tuples::cons<H, T> > +{ +}; + +template<> class tuple_size< boost::tuples::null_type >: + public boost::tuples::length< boost::tuples::null_type > +{ +}; + +// std::tuple_element + +template<std::size_t I, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10> + class tuple_element< I, boost::tuples::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >: + public boost::tuples::element< I, boost::tuples::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> > +{ +}; + +template<std::size_t I, class H, class T> class tuple_element< I, boost::tuples::cons<H, T> >: + public boost::tuples::element< I, boost::tuples::cons<H, T> > +{ +}; + +#if defined(BOOST_CLANG) +# pragma clang diagnostic pop +#endif + +} // namespace std + +#endif // !defined(BOOST_NO_CXX11_HDR_TUPLE) #endif // BOOST_TUPLE_HPP |