aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-contrib <robot-contrib@yandex-team.com>2022-08-07 00:06:44 +0300
committerrobot-contrib <robot-contrib@yandex-team.com>2022-08-07 00:06:44 +0300
commit67b6e12f2297ad3c0127aa42721b8f798f496c13 (patch)
tree569e277876ebcd73d4c9f80366d3ac422a6f4c62
parent4535a1bf240da81a775d25fd3f152020f96a5b63 (diff)
downloadydb-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.hpp56
-rw-r--r--contrib/restricted/boost/tuple/include/boost/tuple/tuple.hpp51
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