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 …
57 …tuple(allocator_arg_t, const Alloc& a, const tuple&); // constexpr in …
59 …tuple(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
81 …tuple& operator=(const tuple&); // constexpr…
82 constexpr const tuple& operator=(const tuple&) const; // C++23
83 …tuple& operator=(tuple&&) noexcept(is_nothrow_move_assignable_v<T> && ...); // constexpr…
84 constexpr const tuple& operator=(tuple&&) const; // C++23
86 …tuple& operator=(const tuple<U...>&); // constexpr in …
88 constexpr const tuple& operator=(const tuple<UTypes...>&) const; // C++23
90 …tuple& operator=(tuple<U...>&&); // constexpr in …
92 constexpr const tuple& operator=(tuple<UTypes...>&&) const; // C++23
94 …tuple& 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++…
98 …tuple& 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]
318 …assert(!is_reference<_Hp>::value, "Attempted to default construct a reference element in a tuple");
323 …assert(!is_reference<_Hp>::value, "Attempted to default construct a reference element in a tuple");
329 …assert(!is_reference<_Hp>::value, "Attempted to default construct a reference element in a tuple");
334 …assert(!is_reference<_Hp>::value, "Attempted to default construct a reference element in a tuple");
359 …!is_reference<_Hp>::value, "Attempted to uses-allocator construct a reference element in a tuple");
366 …!is_reference<_Hp>::value, "Attempted to uses-allocator construct a reference element in a tuple");
487 …template <class _Tuple, __enable_if_t<__tuple_constructible<_Tuple, tuple<_Tp...> >::value, int> =…
496 …template <class _Alloc, class _Tuple, __enable_if_t<__tuple_constructible<_Tuple, tuple<_Tp...> >:…
533 class _LIBCPP_TEMPLATE_VIS tuple {
539 …friend _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Jp, tuple<_Up...> >::type& get(tuple<…
541 friend _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Jp, tuple<_Up...> >::type&
542 get(const tuple<_Up...>&) _NOEXCEPT;
544 friend _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Jp, tuple<_Up...> >::type&&
545 get(tuple<_Up...>&&) _NOEXCEPT;
547 friend _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Jp, tuple<_Up...> >::type&&
548 get(const tuple<_Up...>&&) _NOEXCEPT;
551 …relocatable = __conditional_t<_And<__libcpp_is_trivially_relocatable<_Tp>...>::value, tuple, void>;
553 // [tuple.cnstr]
555 // tuple() constructors (including allocator_arg_t variants)
560 tuple() noexcept(_And<is_nothrow_default_constructible<_Tp>...>::value) {}
567 tuple(allocator_arg_t, _Alloc const& __a)
575 // tuple(const T&...) constructors (including allocator_arg_t variants)
580 tuple(const _Tp&... __t) noexcept(_And<is_nothrow_copy_constructible<_Tp>...>::value)
582 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
584 typename __make_tuple_types<tuple, 0>::type(),
592 tuple(allocator_arg_t, const _Alloc& __a, const _Tp&... __t)
596 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
598 typename __make_tuple_types<tuple, 0>::type(),
601 // tuple(U&& ...) constructors (including allocator_arg_t variants)
605 struct _IsThisTuple<_Up> : is_same<__remove_cvref_t<_Up>, tuple> {};
617 tuple(_Up&&... __u) noexcept(_And<is_nothrow_constructible<_Tp, _Up>...>::value)
619 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
621 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
629 tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
633 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
635 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
639 tuple(const tuple&) = default;
640 tuple(tuple&&) = default;
645 …CPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc& __alloc, cons…
651 …LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc& __alloc, t…
654 // tuple(const tuple<U...>&) constructors (including allocator_arg_t variants)
662 tuple<_Up...>,
669 _Not<is_same<_OtherTuple, const tuple&> >,
670 _Not<is_same<_OtherTuple, tuple&&> >,
681 …template <class... _Up, __enable_if_t< _And< _EnableCtorFromUTypesTuple<const tuple<_Up...>&> >::v…
684 …tuple(const tuple<_Up...>& __t) noexcept(_And<is_nothrow_constructible<_Tp, const _Up&>...>::value)
689 … __enable_if_t< _And< _EnableCtorFromUTypesTuple<const tuple<_Up...>&> >::value, int> = 0>
692 tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
696 // tuple(tuple<U...>&) constructors (including allocator_arg_t variants)
698 …template <class... _Up, enable_if_t< _EnableCtorFromUTypesTuple<tuple<_Up...>&>::value>* = nullptr>
699 …ABI constexpr explicit(!_Lazy<_And, is_convertible<_Up&, _Tp>...>::value) tuple(tuple<_Up...>& __t)
702 …template <class _Alloc, class... _Up, enable_if_t< _EnableCtorFromUTypesTuple<tuple<_Up...>&>::val…
704 tuple(allocator_arg_t, const _Alloc& __alloc, tuple<_Up...>& __t)
708 // tuple(tuple<U...>&&) constructors (including allocator_arg_t variants)
709 …template <class... _Up, __enable_if_t< _And< _EnableCtorFromUTypesTuple<tuple<_Up...>&&> >::value,…
711 tuple(tuple<_Up...>&& __t) noexcept(_And<is_nothrow_constructible<_Tp, _Up>...>::value)
716 __enable_if_t< _And< _EnableCtorFromUTypesTuple<tuple<_Up...>&&> >::value, int> = 0>
718 tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
722 // tuple(const tuple<U...>&&) constructors (including allocator_arg_t variants)
724 …template <class... _Up, enable_if_t< _EnableCtorFromUTypesTuple<const tuple<_Up...>&&>::value>* = …
726 tuple(const tuple<_Up...>&& __t)
731 enable_if_t< _EnableCtorFromUTypesTuple<const tuple<_Up...>&&>::value>* = nullptr>
733 tuple(allocator_arg_t, const _Alloc& __alloc, const tuple<_Up...>&& __t)
737 // tuple(const pair<U1, U2>&) constructors (including allocator_arg_t variants)
742 class _Tuple = tuple>
746 struct _CtorPredicateFromPair<_Pred, _Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> >
755 template <class _Pair, class _DecayedPair = __remove_cvref_t<_Pair>, class _Tuple = tuple>
759 struct _BothImplicitlyConvertible<_Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> >
768 …tuple(const pair<_Up1, _Up2>& __p) noexcept(_NothrowConstructibleFromPair<const pair<_Up1, _Up2>&>…
778 tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
782 // tuple(pair<U1, U2>&) constructors (including allocator_arg_t variants)
786 tuple(pair<_U1, _U2>& __p)
794 tuple(allocator_arg_t, const _Alloc& __alloc, pair<_U1, _U2>& __p)
798 // tuple(pair<U1, U2>&&) constructors (including allocator_arg_t variants)
806 … tuple(pair<_Up1, _Up2>&& __p) noexcept(_NothrowConstructibleFromPair<pair<_Up1, _Up2>&&>::value)
816 tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
820 // tuple(const pair<U1, U2>&&) constructors (including allocator_arg_t variants)
824 tuple(const pair<_U1, _U2>&& __p)
832 tuple(allocator_arg_t, const _Alloc& __alloc, const pair<_U1, _U2>&& __p)
836 // [tuple.assign]
837 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple&
838 operator=(_If<_And<is_copy_assignable<_Tp>...>::value, tuple, __nat> const& __tuple)
845 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(tuple const& __tuple) const
852 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(tuple&& __tuple) const
861 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple&
862 operator=(_If<_And<is_move_assignable<_Tp>...>::value, tuple, __nat>&& __tuple)
873 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(tuple<_Up...> const& __tuple)
882 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(tuple<_Up...>&& __tuple)
893 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(const tuple<_UTypes...>& __u) const {
901 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(tuple<_UTypes...>&& __u) const {
912 class _Tuple = tuple>
916 struct _AssignPredicateFromPair<_Pred, _Const, _Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> >
928 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(const pair<_U1, _U2>& __pair) const
936 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(pair<_U1, _U2>&& __pair) const
947 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(pair<_Up1, _Up2> const& __pai…
955 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(pair<_Up1, _Up2>&& __pair)
967 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(array<_Up, _Np> const& __arra…
978 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(array<_Up, _Np>&& __array)
988 // [tuple.swap]
989 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(tuple& __t)
995 _LIBCPP_HIDE_FROM_ABI constexpr void swap(const tuple& __t) const
1003 class _LIBCPP_TEMPLATE_VIS tuple<> {
1005 constexpr tuple() _NOEXCEPT = default;
1007 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc&) _NOEXCEP…
1009 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc&, const tu…
1011 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(array<_Up, 0>) _NOEXCEPT {}
1013 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc&, array<_U…
1014 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(tuple&) _NOEXCEPT {}
1016 _LIBCPP_HIDE_FROM_ABI constexpr void swap(const tuple&) const noexcept {}
1022 requires requires { typename tuple<common_reference_t<_TQual<_TTypes>, _UQual<_UTypes>>...>; }
1023 struct basic_common_reference<tuple<_TTypes...>, tuple<_UTypes...>, _TQual, _UQual> {
1024 using type = tuple<common_reference_t<_TQual<_TTypes>, _UQual<_UTypes>>...>;
1028 requires requires { typename tuple<common_type_t<_TTypes, _UTypes>...>; }
1029 struct common_type<tuple<_TTypes...>, tuple<_UTypes...>> {
1030 using type = tuple<common_type_t<_TTypes, _UTypes>...>;
1036 tuple(_Tp...) -> tuple<_Tp...>;
1038 tuple(pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1040 tuple(allocator_arg_t, _Alloc, _Tp...) -> tuple<_Tp...>;
1042 tuple(allocator_arg_t, _Alloc, pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1044 tuple(allocator_arg_t, _Alloc, tuple<_Tp...>) -> tuple<_Tp...>;
1048 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(tuple<_Tp...>& __t, tuple<_Tp.…
1056 swap(const tuple<_Tp...>& __lhs,
1057 const tuple<_Tp...>& __rhs) noexcept(__all<is_nothrow_swappable_v<const _Tp>...>::value) {
1065 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Ip, tuple<_Tp...…
1066 get(tuple<_Tp...>& __t) _NOEXCEPT {
1067 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1072 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Ip, tuple<…
1073 get(const tuple<_Tp...>& __t) _NOEXCEPT {
1074 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1079 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Ip, tuple<_Tp...…
1080 get(tuple<_Tp...>&& __t) _NOEXCEPT {
1081 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1086 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Ip, tuple<…
1087 get(const tuple<_Tp...>&& __t) _NOEXCEPT {
1088 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1095 inline _LIBCPP_HIDE_FROM_ABI constexpr _T1& get(tuple<_Args...>& __tup) noexcept {
1100 inline _LIBCPP_HIDE_FROM_ABI constexpr _T1 const& get(tuple<_Args...> const& __tup) noexcept {
1105 inline _LIBCPP_HIDE_FROM_ABI constexpr _T1&& get(tuple<_Args...>&& __tup) noexcept {
1110 inline _LIBCPP_HIDE_FROM_ABI constexpr _T1 const&& get(tuple<_Args...> const&& __tup) noexcept {
1119 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<_Tp&...> tie(_Tp&... __t) _NOEXCEP…
1120 return tuple<_Tp&...>(__t...);
1124 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<typename __unwrap_ref_decay<_Tp>::…
1126 return tuple<typename __unwrap_ref_decay<_Tp>::type...>(std::forward<_Tp>(__t)...);
1130 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<_Tp&&...> forward_as_tuple(_Tp&&..…
1131 return tuple<_Tp&&...>(std::forward<_Tp>(__t)...);
1152 operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1163 __tuple_compare_three_way(const tuple<_Tp...>& __x, const tuple<_Up...>& __y, index_sequence<_Is...…
1173 operator<=>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1181 operator!=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1208 operator<(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1215 operator>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1221 operator>=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1227 operator<=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1239 struct __tuple_cat_type<tuple<_Ttypes...>, __tuple_types<_Utypes...> > {
1240 typedef _LIBCPP_NODEBUG tuple<_Ttypes..., _Utypes...> type;
1247 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0> {
1249 typename __tuple_cat_type< tuple<_Types...>,
1254 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0, _Tuple1, _Tuples...>
1256 typename __tuple_cat_type< tuple<_Types...>,
1267 : public __tuple_cat_return_1<tuple<>,
1274 typedef _LIBCPP_NODEBUG tuple<> type;
1277 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<> tuple_cat() { return tuple<>(); }
1283 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0> {
1285 …typedef tuple<_Types..., __copy_cvref_t<_Tuple0, typename tuple_element<_I0, _T0>::type>&&...> typ…
1289 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0, _Tuple1, _Tup…
1291 tuple<_Types...,
1300 tuple<>,
1309 struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J0...> > {
1312 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&>::type
1313 operator()(tuple<_Types...> __t, _Tuple0&& __t0) {
1321 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&, _Tuple1&&, _Tuples&&...>::type
1322 operator()(tuple<_Types...> __t, _Tuple0&& __t0, _Tuple1&& __t1, _Tuples&&... __tpls) {
1326 …return __tuple_cat<tuple<_Types..., __copy_cvref_t<_Tuple0, typename tuple_element<_J0, _T0>::type…
1340 …return __tuple_cat<tuple<>, __tuple_indices<>, typename __make_tuple_indices<tuple_size<_T0>::valu…
1341 tuple<>(), std::forward<_Tuple0>(__t0), std::forward<_Tuples>(__tpls)...);
1345 struct _LIBCPP_TEMPLATE_VIS uses_allocator<tuple<_Tp...>, _Alloc> : true_type {};