Lines Matching full:tuple

16     tuple synopsis
22 class tuple {
24 explicit(see-below) constexpr tuple();
25 explicit(see-below) tuple(const T&...); // constexpr in C++14
27 explicit(see-below) tuple(U&&...); // constexpr in C++14
28 tuple(const tuple&) = default;
29 tuple(tuple&&) = default;
32 constexpr explicit(see-below) tuple(tuple<UTypes...>&); // C++23
34 explicit(see-below) tuple(const tuple<U...>&); // constexpr in C++14
36 explicit(see-below) tuple(tuple<U...>&&); // constexpr in C++14
38 constexpr explicit(see-below) tuple(const tuple<UTypes...>&&); // C++23
41 constexpr explicit(see-below) tuple(pair<U1, U2>&); // iff sizeof...(Types) == 2 // C++23
43 … explicit(see-below) tuple(const pair<U1, U2>&); // iff sizeof...(T) == 2 // constexpr in C++14
45 explicit(see-below) tuple(pair<U1, U2>&&); // iff sizeof...(T) == 2 // constexpr in C++14
47 … constexpr explicit(see-below) tuple(const pair<U1, U2>&&); // iff sizeof...(Types) == 2 // C++23
51 tuple(allocator_arg_t, const Alloc& a);
53 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, const T&...); // constexpr in …
55 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, U&&...); // constexpr in …
57tuple(allocator_arg_t, const Alloc& a, const tuple&); // constexpr in …
59tuple(allocator_arg_t, const Alloc& a, tuple&&); // constexpr in …
62 tuple(allocator_arg_t, const Alloc& a, tuple<UTypes...>&); // C++23
64 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, const tuple<U...>&); // constexpr in …
66 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, tuple<U...>&&); // constexpr in …
69 tuple(allocator_arg_t, const Alloc& a, const tuple<UTypes...>&&); // C++23
72 tuple(allocator_arg_t, const Alloc& a, pair<U1, U2>&); // C++23
74 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, const pair<U1, U2>&); // constexpr in …
76 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, pair<U1, U2>&&); // constexpr in …
79 tuple(allocator_arg_t, const Alloc& a, const pair<U1, U2>&&); // C++23
81tuple& operator=(const tuple&); // constexpr…
82 constexpr const tuple& operator=(const tuple&) const; // C++23
83tuple& operator=(tuple&&) noexcept(is_nothrow_move_assignable_v<T> && ...); // constexpr…
84 constexpr const tuple& operator=(tuple&&) const; // C++23
86tuple& operator=(const tuple<U...>&); // constexpr in …
88 constexpr const tuple& operator=(const tuple<UTypes...>&) const; // C++23
90tuple& operator=(tuple<U...>&&); // constexpr in …
92 constexpr const tuple& operator=(tuple<UTypes...>&&) const; // C++23
94tuple& operator=(const pair<U1, U2>&); // iff sizeof...(T) == 2 // constexpr in …
96 …constexpr const tuple& operator=(const pair<U1, U2>&) const; // iff sizeof...(Types) == 2 // C++…
98tuple& operator=(pair<U1, U2>&&); // iff sizeof...(T) == 2 // constexpr in …
100 … constexpr const tuple& operator=(pair<U1, U2>&&) const; // iff sizeof...(Types) == 2 // C++23
103 tuple& operator=(array<U, N> const&) // iff sizeof...(T) == N, EXTENSION
105 tuple& operator=(array<U, N>&&) // iff sizeof...(T) == N, EXTENSION
107 …void swap(tuple&) noexcept(AND(swap(declval<T&>(), declval<T&>())...)); // constexpr…
108 constexpr void swap(const tuple&) const noexcept(see-below); // C++23
113 requires requires { typename tuple<common_reference_t<TQual<TTypes>, UQual<UTypes>>...>; }
114 struct basic_common_reference<tuple<TTypes...>, tuple<UTypes...>, TQual, UQual> {
115 using type = tuple<common_reference_t<TQual<TTypes>, UQual<UTypes>>...>;
119 requires requires { typename tuple<common_type_t<TTypes, UTypes>...>; }
120 struct common_type<tuple<TTypes...>, tuple<UTypes...>> {
121 using type = tuple<common_type_t<TTypes, UTypes>...>;
125 tuple(T...) -> tuple<T...>; // since C++17
127 tuple(pair<T1, T2>) -> tuple<T1, T2>; // since C++17
129 tuple(allocator_arg_t, Alloc, T...) -> tuple<T...>; // since C++17
131 tuple(allocator_arg_t, Alloc, pair<T1, T2>) -> tuple<T1, T2>; // since C++17
133 tuple(allocator_arg_t, Alloc, tuple<T...>) -> tuple<T...>; // since C++17
142 template <class... T> tuple<V...> make_tuple(T&&...); // constexpr in C++14
143 template <class... T> tuple<ATypes...> forward_as_tuple(T&&...) noexcept; // constexpr in C++14
144 template <class... T> tuple<T&...> tie(T&...) noexcept; // constexpr in C++14
145 template <class... Tuples> tuple<CTypes...> tuple_cat(Tuples&&... tpls); // constexpr in C++14
147 // [tuple.apply], calling a function with a tuple of arguments:
148 template <class F, class Tuple>
149 …constexpr decltype(auto) apply(F&& f, Tuple&& t) noexcept(see below); // C++17 noexcept since C++…
150 template <class T, class Tuple>
151 constexpr T make_from_tuple(Tuple&& t); // C++17
153 // 20.4.1.4, tuple helper classes:
155 template <class... T> struct tuple_size<tuple<T...>>;
159 template <size_t I, class... T> struct tuple_element<I, tuple<T...>>;
165 typename tuple_element<I, tuple<T...>>::type&
166 get(tuple<T...>&) noexcept; // constexpr in C++14
168 const typename tuple_element<I, tuple<T...>>::type&
169 get(const tuple<T...>&) noexcept; // constexpr in C++14
171 typename tuple_element<I, tuple<T...>>::type&&
172 get(tuple<T...>&&) noexcept; // constexpr in C++14
174 const typename tuple_element<I, tuple<T...>>::type&&
175 get(const tuple<T...>&&) noexcept; // constexpr in C++14
178 constexpr T1& get(tuple<T...>&) noexcept; // C++14
180 constexpr const T1& get(const tuple<T...>&) noexcept; // C++14
182 constexpr T1&& get(tuple<T...>&&) noexcept; // C++14
184 constexpr const T1&& get(const tuple<T...>&&) noexcept; // C++14
187 template<class... T, class... U> bool operator==(const tuple<T...>&, const tuple<U...>&); // conste…
188 template<class... T, class... U> bool operator<(const tuple<T...>&, const tuple<U...>&); // conste…
189 template<class... T, class... U> bool operator!=(const tuple<T...>&, const tuple<U...>&); // conste…
190 template<class... T, class... U> bool operator>(const tuple<T...>&, const tuple<U...>&); // conste…
191 template<class... T, class... U> bool operator<=(const tuple<T...>&, const tuple<U...>&); // conste…
192 template<class... T, class... U> bool operator>=(const tuple<T...>&, const tuple<U...>&); // conste…
195 …operator<=>(const tuple<T...>&, const tuple<U...>&); // since C++…
198 struct uses_allocator<tuple<Types...>, Alloc>;
202 swap(tuple<Types...>& x, tuple<Types...>& y) noexcept(noexcept(x.swap(y)));
205 …constexpr void swap(const tuple<Types...>& x, const tuple<Types...>& y) noexcept(see-below); // …
219 #include <__fwd/tuple.h>
267 // [tuple.syn]
316 …assert(!is_reference<_Hp>::value, "Attempted to default construct a reference element in a tuple");
321 …assert(!is_reference<_Hp>::value, "Attempted to default construct a reference element in a tuple");
327 …assert(!is_reference<_Hp>::value, "Attempted to default construct a reference element in a tuple");
332 …assert(!is_reference<_Hp>::value, "Attempted to default construct a reference element in a tuple");
357 …!is_reference<_Hp>::value, "Attempted to uses-allocator construct a reference element in a tuple");
364 …!is_reference<_Hp>::value, "Attempted to uses-allocator construct a reference element in a tuple");
485 …template <class _Tuple, __enable_if_t<__tuple_constructible<_Tuple, tuple<_Tp...> >::value, int> =…
494 …template <class _Alloc, class _Tuple, __enable_if_t<__tuple_constructible<_Tuple, tuple<_Tp...> >:…
531 class _LIBCPP_TEMPLATE_VIS tuple {
537 …friend _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Jp, tuple<_Up...> >::type& get(tuple<…
539 friend _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Jp, tuple<_Up...> >::type&
540 get(const tuple<_Up...>&) _NOEXCEPT;
542 friend _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Jp, tuple<_Up...> >::type&&
543 get(tuple<_Up...>&&) _NOEXCEPT;
545 friend _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Jp, tuple<_Up...> >::type&&
546 get(const tuple<_Up...>&&) _NOEXCEPT;
549 …relocatable = __conditional_t<_And<__libcpp_is_trivially_relocatable<_Tp>...>::value, tuple, void>;
551 // [tuple.cnstr]
553 // tuple() constructors (including allocator_arg_t variants)
558 tuple() noexcept(_And<is_nothrow_default_constructible<_Tp>...>::value) {}
565 tuple(allocator_arg_t, _Alloc const& __a)
573 // tuple(const T&...) constructors (including allocator_arg_t variants)
578 tuple(const _Tp&... __t) noexcept(_And<is_nothrow_copy_constructible<_Tp>...>::value)
580 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
582 typename __make_tuple_types<tuple, 0>::type(),
590 tuple(allocator_arg_t, const _Alloc& __a, const _Tp&... __t)
594 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
596 typename __make_tuple_types<tuple, 0>::type(),
599 // tuple(U&& ...) constructors (including allocator_arg_t variants)
603 struct _IsThisTuple<_Up> : is_same<__remove_cvref_t<_Up>, tuple> {};
615 tuple(_Up&&... __u) noexcept(_And<is_nothrow_constructible<_Tp, _Up>...>::value)
617 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
619 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
627 tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
631 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
633 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
637 tuple(const tuple&) = default;
638 tuple(tuple&&) = default;
643 …CPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc& __alloc, cons…
649 …LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc& __alloc, t…
652 // tuple(const tuple<U...>&) constructors (including allocator_arg_t variants)
660 tuple<_Up...>,
667 _Not<is_same<_OtherTuple, const tuple&> >,
668 _Not<is_same<_OtherTuple, tuple&&> >,
679 …template <class... _Up, __enable_if_t< _And< _EnableCtorFromUTypesTuple<const tuple<_Up...>&> >::v…
682tuple(const tuple<_Up...>& __t) noexcept(_And<is_nothrow_constructible<_Tp, const _Up&>...>::value)
687 … __enable_if_t< _And< _EnableCtorFromUTypesTuple<const tuple<_Up...>&> >::value, int> = 0>
690 tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
694 // tuple(tuple<U...>&) constructors (including allocator_arg_t variants)
696 …template <class... _Up, enable_if_t< _EnableCtorFromUTypesTuple<tuple<_Up...>&>::value>* = nullptr>
697 …ABI constexpr explicit(!_Lazy<_And, is_convertible<_Up&, _Tp>...>::value) tuple(tuple<_Up...>& __t)
700 …template <class _Alloc, class... _Up, enable_if_t< _EnableCtorFromUTypesTuple<tuple<_Up...>&>::val…
702 tuple(allocator_arg_t, const _Alloc& __alloc, tuple<_Up...>& __t)
706 // tuple(tuple<U...>&&) constructors (including allocator_arg_t variants)
707 …template <class... _Up, __enable_if_t< _And< _EnableCtorFromUTypesTuple<tuple<_Up...>&&> >::value,…
709 tuple(tuple<_Up...>&& __t) noexcept(_And<is_nothrow_constructible<_Tp, _Up>...>::value)
714 __enable_if_t< _And< _EnableCtorFromUTypesTuple<tuple<_Up...>&&> >::value, int> = 0>
716 tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
720 // tuple(const tuple<U...>&&) constructors (including allocator_arg_t variants)
722 …template <class... _Up, enable_if_t< _EnableCtorFromUTypesTuple<const tuple<_Up...>&&>::value>* = …
724 tuple(const tuple<_Up...>&& __t)
729 enable_if_t< _EnableCtorFromUTypesTuple<const tuple<_Up...>&&>::value>* = nullptr>
731 tuple(allocator_arg_t, const _Alloc& __alloc, const tuple<_Up...>&& __t)
735 // tuple(const pair<U1, U2>&) constructors (including allocator_arg_t variants)
740 class _Tuple = tuple>
744 struct _CtorPredicateFromPair<_Pred, _Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> >
753 template <class _Pair, class _DecayedPair = __remove_cvref_t<_Pair>, class _Tuple = tuple>
757 struct _BothImplicitlyConvertible<_Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> >
766tuple(const pair<_Up1, _Up2>& __p) noexcept(_NothrowConstructibleFromPair<const pair<_Up1, _Up2>&>…
776 tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
780 // tuple(pair<U1, U2>&) constructors (including allocator_arg_t variants)
784 tuple(pair<_U1, _U2>& __p)
792 tuple(allocator_arg_t, const _Alloc& __alloc, pair<_U1, _U2>& __p)
796 // tuple(pair<U1, U2>&&) constructors (including allocator_arg_t variants)
804tuple(pair<_Up1, _Up2>&& __p) noexcept(_NothrowConstructibleFromPair<pair<_Up1, _Up2>&&>::value)
814 tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
818 // tuple(const pair<U1, U2>&&) constructors (including allocator_arg_t variants)
822 tuple(const pair<_U1, _U2>&& __p)
830 tuple(allocator_arg_t, const _Alloc& __alloc, const pair<_U1, _U2>&& __p)
834 // [tuple.assign]
835 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple&
836 operator=(_If<_And<is_copy_assignable<_Tp>...>::value, tuple, __nat> const& __tuple)
843 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(tuple const& __tuple) const
850 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(tuple&& __tuple) const
859 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple&
860 operator=(_If<_And<is_move_assignable<_Tp>...>::value, tuple, __nat>&& __tuple)
871 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(tuple<_Up...> const& __tuple)
880 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(tuple<_Up...>&& __tuple)
891 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(const tuple<_UTypes...>& __u) const {
899 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(tuple<_UTypes...>&& __u) const {
910 class _Tuple = tuple>
914 struct _AssignPredicateFromPair<_Pred, _Const, _Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> >
926 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(const pair<_U1, _U2>& __pair) const
934 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(pair<_U1, _U2>&& __pair) const
945 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(pair<_Up1, _Up2> const& __pai…
953 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(pair<_Up1, _Up2>&& __pair)
965 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(array<_Up, _Np> const& __arra…
976 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(array<_Up, _Np>&& __array)
986 // [tuple.swap]
987 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(tuple& __t)
993 _LIBCPP_HIDE_FROM_ABI constexpr void swap(const tuple& __t) const
1001 class _LIBCPP_TEMPLATE_VIS tuple<> {
1003 constexpr tuple() _NOEXCEPT = default;
1005 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc&) _NOEXCEP…
1007 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc&, const tu…
1009 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(array<_Up, 0>) _NOEXCEPT {}
1011 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc&, array<_U…
1012 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(tuple&) _NOEXCEPT {}
1014 _LIBCPP_HIDE_FROM_ABI constexpr void swap(const tuple&) const noexcept {}
1020 requires requires { typename tuple<common_reference_t<_TQual<_TTypes>, _UQual<_UTypes>>...>; }
1021 struct basic_common_reference<tuple<_TTypes...>, tuple<_UTypes...>, _TQual, _UQual> {
1022 using type = tuple<common_reference_t<_TQual<_TTypes>, _UQual<_UTypes>>...>;
1026 requires requires { typename tuple<common_type_t<_TTypes, _UTypes>...>; }
1027 struct common_type<tuple<_TTypes...>, tuple<_UTypes...>> {
1028 using type = tuple<common_type_t<_TTypes, _UTypes>...>;
1034 tuple(_Tp...) -> tuple<_Tp...>;
1036 tuple(pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1038 tuple(allocator_arg_t, _Alloc, _Tp...) -> tuple<_Tp...>;
1040 tuple(allocator_arg_t, _Alloc, pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1042 tuple(allocator_arg_t, _Alloc, tuple<_Tp...>) -> tuple<_Tp...>;
1046 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(tuple<_Tp...>& __t, tuple<_Tp.…
1054 swap(const tuple<_Tp...>& __lhs,
1055 const tuple<_Tp...>& __rhs) noexcept(__all<is_nothrow_swappable_v<const _Tp>...>::value) {
1063 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Ip, tuple<_Tp...…
1064 get(tuple<_Tp...>& __t) _NOEXCEPT {
1065 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1070 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Ip, tuple<…
1071 get(const tuple<_Tp...>& __t) _NOEXCEPT {
1072 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1077 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Ip, tuple<_Tp...…
1078 get(tuple<_Tp...>&& __t) _NOEXCEPT {
1079 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1084 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Ip, tuple<…
1085 get(const tuple<_Tp...>&& __t) _NOEXCEPT {
1086 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1093 inline _LIBCPP_HIDE_FROM_ABI constexpr _T1& get(tuple<_Args...>& __tup) noexcept {
1098 inline _LIBCPP_HIDE_FROM_ABI constexpr _T1 const& get(tuple<_Args...> const& __tup) noexcept {
1103 inline _LIBCPP_HIDE_FROM_ABI constexpr _T1&& get(tuple<_Args...>&& __tup) noexcept {
1108 inline _LIBCPP_HIDE_FROM_ABI constexpr _T1 const&& get(tuple<_Args...> const&& __tup) noexcept {
1117 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<_Tp&...> tie(_Tp&... __t) _NOEXCEP…
1118 return tuple<_Tp&...>(__t...);
1122 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<typename __unwrap_ref_decay<_Tp>::…
1124 return tuple<typename __unwrap_ref_decay<_Tp>::type...>(std::forward<_Tp>(__t)...);
1128 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<_Tp&&...> forward_as_tuple(_Tp&&..…
1129 return tuple<_Tp&&...>(std::forward<_Tp>(__t)...);
1150 operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1161 __tuple_compare_three_way(const tuple<_Tp...>& __x, const tuple<_Up...>& __y, index_sequence<_Is...…
1171 operator<=>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1179 operator!=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1206 operator<(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1213 operator>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1219 operator>=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1225 operator<=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1237 struct __tuple_cat_type<tuple<_Ttypes...>, __tuple_types<_Utypes...> > {
1238 typedef _LIBCPP_NODEBUG tuple<_Ttypes..., _Utypes...> type;
1245 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0> {
1247 typename __tuple_cat_type< tuple<_Types...>,
1252 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0, _Tuple1, _Tuples...>
1254 typename __tuple_cat_type< tuple<_Types...>,
1265 : public __tuple_cat_return_1<tuple<>,
1272 typedef _LIBCPP_NODEBUG tuple<> type;
1275 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<> tuple_cat() { return tuple<>(); }
1281 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0> {
1283 …typedef tuple<_Types..., __copy_cvref_t<_Tuple0, typename tuple_element<_I0, _T0>::type>&&...> typ…
1287 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0, _Tuple1, _Tup…
1289 tuple<_Types...,
1298 tuple<>,
1307 struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J0...> > {
1310 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&>::type
1311 operator()(tuple<_Types...> __t, _Tuple0&& __t0) {
1319 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&, _Tuple1&&, _Tuples&&...>::type
1320 operator()(tuple<_Types...> __t, _Tuple0&& __t0, _Tuple1&& __t1, _Tuples&&... __tpls) {
1324 …return __tuple_cat<tuple<_Types..., __copy_cvref_t<_Tuple0, typename tuple_element<_J0, _T0>::type…
1338 …return __tuple_cat<tuple<>, __tuple_indices<>, typename __make_tuple_indices<tuple_size<_T0>::valu…
1339 tuple<>(), std::forward<_Tuple0>(__t0), std::forward<_Tuples>(__tpls)...);
1343 struct _LIBCPP_TEMPLATE_VIS uses_allocator<tuple<_Tp...>, _Alloc> : true_type {};