Lines Matching refs: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
137 template <class... T> tuple<V...> make_tuple(T&&...); // constexpr in C++14
138 template <class... T> tuple<ATypes...> forward_as_tuple(T&&...) noexcept; // constexpr in C++14
139 template <class... T> tuple<T&...> tie(T&...) noexcept; // constexpr in C++14
140 template <class... Tuples> tuple<CTypes...> tuple_cat(Tuples&&... tpls); // constexpr in C++14
142 // [tuple.apply], calling a function with a tuple of arguments:
148 // 20.4.1.4, tuple helper classes:
150 template <class... T> struct tuple_size<tuple<T...>>;
154 template <size_t I, class... T> struct tuple_element<I, tuple<T...>>;
160 typename tuple_element<I, tuple<T...>>::type&
161 get(tuple<T...>&) noexcept; // constexpr in C++14
163 const typename tuple_element<I, tuple<T...>>::type&
164 get(const tuple<T...>&) noexcept; // constexpr in C++14
166 typename tuple_element<I, tuple<T...>>::type&&
167 get(tuple<T...>&&) noexcept; // constexpr in C++14
169 const typename tuple_element<I, tuple<T...>>::type&&
170 get(const tuple<T...>&&) noexcept; // constexpr in C++14
173 constexpr T1& get(tuple<T...>&) noexcept; // C++14
175 constexpr const T1& get(const tuple<T...>&) noexcept; // C++14
177 constexpr T1&& get(tuple<T...>&&) noexcept; // C++14
179 constexpr const T1&& get(const tuple<T...>&&) noexcept; // C++14
182 template<class... T, class... U> bool operator==(const tuple<T...>&, const tuple<U...>&); // conste…
183 template<class... T, class... U> bool operator<(const tuple<T...>&, const tuple<U...>&); // conste…
184 template<class... T, class... U> bool operator!=(const tuple<T...>&, const tuple<U...>&); // conste…
185 template<class... T, class... U> bool operator>(const tuple<T...>&, const tuple<U...>&); // conste…
186 template<class... T, class... U> bool operator<=(const tuple<T...>&, const tuple<U...>&); // conste…
187 template<class... T, class... U> bool operator>=(const tuple<T...>&, const tuple<U...>&); // conste…
190 …operator<=>(const tuple<T...>&, const tuple<U...>&); // since C++…
193 struct uses_allocator<tuple<Types...>, Alloc>;
197 swap(tuple<Types...>& x, tuple<Types...>& y) noexcept(noexcept(x.swap(y)));
200 …constexpr void swap(const tuple<Types...>& x, const tuple<Types...>& y) noexcept(see-below); // …
215 #include <__fwd/tuple.h>
271 // [tuple.syn]
321 …assert(!is_reference<_Hp>::value, "Attempted to default construct a reference element in a tuple");
326 …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");
337 …assert(!is_reference<_Hp>::value, "Attempted to default construct a reference element in a tuple");
362 …!is_reference<_Hp>::value, "Attempted to uses-allocator construct a reference element in a tuple");
369 …!is_reference<_Hp>::value, "Attempted to uses-allocator construct a reference element in a tuple");
487 …template <class _Tuple, class = __enable_if_t<__tuple_constructible<_Tuple, tuple<_Tp...> >::value…
496 …template <class _Alloc, class _Tuple, class = __enable_if_t<__tuple_constructible<_Tuple, tuple<_T…
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 // [tuple.cnstr]
557 // tuple() constructors (including allocator_arg_t variants)
561 …_HIDE_FROM_ABI _LIBCPP_CONSTEXPR explicit(_Not<_Lazy<_And, _IsImpDefault<_Tp>...> >::value) tuple()
569 tuple(allocator_arg_t, _Alloc const& __a)
577 // tuple(const T&...) constructors (including allocator_arg_t variants)
581 _Not<_Lazy<_And, is_convertible<const _Tp&, _Tp>...> >::value) tuple(const _Tp&... __t)
584 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
586 typename __make_tuple_types<tuple, 0>::type(),
594 tuple(allocator_arg_t, const _Alloc& __a, const _Tp&... __t)
598 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
600 typename __make_tuple_types<tuple, 0>::type(),
603 // tuple(U&& ...) constructors (including allocator_arg_t variants)
607 struct _IsThisTuple<_Up> : is_same<__remove_cvref_t<_Up>, tuple> {};
619 tuple(_Up&&... __u) _NOEXCEPT_((_And<is_nothrow_constructible<_Tp, _Up>...>::value))
621 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
623 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
631 tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
635 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
637 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
641 tuple(const tuple&) = default;
642 tuple(tuple&&) = default;
647 …CPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc& __alloc, cons…
653 …LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc& __alloc, t…
656 // tuple(const tuple<U...>&) constructors (including allocator_arg_t variants)
664 tuple<_Up...>,
671 _Not<is_same<_OtherTuple, const tuple&> >,
672 _Not<is_same<_OtherTuple, tuple&&> >,
683 …template <class... _Up, __enable_if_t< _And< _EnableCtorFromUTypesTuple<const tuple<_Up...>&> >::v…
685 _Not<_Lazy<_And, is_convertible<const _Up&, _Tp>...> >::value) tuple(const tuple<_Up...>& __t)
691 … __enable_if_t< _And< _EnableCtorFromUTypesTuple<const tuple<_Up...>&> >::value, int> = 0>
694 tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
698 // tuple(tuple<U...>&) constructors (including allocator_arg_t variants)
700 …template <class... _Up, enable_if_t< _EnableCtorFromUTypesTuple<tuple<_Up...>&>::value>* = nullptr>
701 …ABI constexpr explicit(!_Lazy<_And, is_convertible<_Up&, _Tp>...>::value) tuple(tuple<_Up...>& __t)
704 …template <class _Alloc, class... _Up, enable_if_t< _EnableCtorFromUTypesTuple<tuple<_Up...>&>::val…
706 tuple(allocator_arg_t, const _Alloc& __alloc, tuple<_Up...>& __t)
710 // tuple(tuple<U...>&&) constructors (including allocator_arg_t variants)
711 …template <class... _Up, __enable_if_t< _And< _EnableCtorFromUTypesTuple<tuple<_Up...>&&> >::value,…
713 tuple(tuple<_Up...>&& __t) _NOEXCEPT_((_And<is_nothrow_constructible<_Tp, _Up>...>::value))
718 __enable_if_t< _And< _EnableCtorFromUTypesTuple<tuple<_Up...>&&> >::value, int> = 0>
720 tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
724 // tuple(const tuple<U...>&&) constructors (including allocator_arg_t variants)
726 …template <class... _Up, enable_if_t< _EnableCtorFromUTypesTuple<const tuple<_Up...>&&>::value>* = …
728 tuple(const tuple<_Up...>&& __t)
733 enable_if_t< _EnableCtorFromUTypesTuple<const tuple<_Up...>&&>::value>* = nullptr>
735 tuple(allocator_arg_t, const _Alloc& __alloc, const tuple<_Up...>&& __t)
739 // tuple(const pair<U1, U2>&) constructors (including allocator_arg_t variants)
744 class _Tuple = tuple>
748 struct _CtorPredicateFromPair<_Pred, _Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> >
757 template <class _Pair, class _DecayedPair = __remove_cvref_t<_Pair>, class _Tuple = tuple>
761 struct _BothImplicitlyConvertible<_Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> >
769 …_Not<_BothImplicitlyConvertible<const pair<_Up1, _Up2>&> >::value) tuple(const pair<_Up1, _Up2>& _…
780 tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
784 // tuple(pair<U1, U2>&) constructors (including allocator_arg_t variants)
788 tuple(pair<_U1, _U2>& __p)
796 tuple(allocator_arg_t, const _Alloc& __alloc, pair<_U1, _U2>& __p)
800 // tuple(pair<U1, U2>&&) constructors (including allocator_arg_t variants)
807 _Not<_BothImplicitlyConvertible<pair<_Up1, _Up2>&&> >::value) tuple(pair<_Up1, _Up2>&& __p)
818 tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
822 // tuple(const pair<U1, U2>&&) constructors (including allocator_arg_t variants)
826 tuple(const pair<_U1, _U2>&& __p)
834 tuple(allocator_arg_t, const _Alloc& __alloc, const pair<_U1, _U2>&& __p)
840 // [tuple.assign]
841 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple&
842 operator=(_If<_And<is_copy_assignable<_Tp>...>::value, tuple, __nat> const& __tuple)
849 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(tuple const& __tuple) const
856 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(tuple&& __tuple) const
865 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple&
866 operator=(_If<_And<is_move_assignable<_Tp>...>::value, tuple, __nat>&& __tuple)
877 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(tuple<_Up...> const& __tuple)
886 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(tuple<_Up...>&& __tuple)
897 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(const tuple<_UTypes...>& __u) const {
905 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(tuple<_UTypes...>&& __u) const {
916 class _Tuple = tuple>
920 struct _AssignPredicateFromPair<_Pred, _Const, _Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> >
932 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(const pair<_U1, _U2>& __pair) const
940 _LIBCPP_HIDE_FROM_ABI constexpr const tuple& operator=(pair<_U1, _U2>&& __pair) const
951 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(pair<_Up1, _Up2> const& __pai…
959 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(pair<_Up1, _Up2>&& __pair)
971 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(array<_Up, _Np> const& __arra…
982 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple& operator=(array<_Up, _Np>&& __array)
992 // [tuple.swap]
993 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(tuple& __t)
999 _LIBCPP_HIDE_FROM_ABI constexpr void swap(const tuple& __t) const
1007 class _LIBCPP_TEMPLATE_VIS tuple<> {
1009 constexpr tuple() _NOEXCEPT = default;
1011 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc&) _NOEXCEP…
1013 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc&, const tu…
1015 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(array<_Up, 0>) _NOEXCEPT {}
1017 …_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 tuple(allocator_arg_t, const _Alloc&, array<_U…
1018 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(tuple&) _NOEXCEPT {}
1020 _LIBCPP_HIDE_FROM_ABI constexpr void swap(const tuple&) const noexcept {}
1026 requires requires { typename tuple<common_reference_t<_TQual<_TTypes>, _UQual<_UTypes>>...>; }
1027 struct basic_common_reference<tuple<_TTypes...>, tuple<_UTypes...>, _TQual, _UQual> {
1028 using type = tuple<common_reference_t<_TQual<_TTypes>, _UQual<_UTypes>>...>;
1032 requires requires { typename tuple<common_type_t<_TTypes, _UTypes>...>; }
1033 struct common_type<tuple<_TTypes...>, tuple<_UTypes...>> {
1034 using type = tuple<common_type_t<_TTypes, _UTypes>...>;
1040 tuple(_Tp...) -> tuple<_Tp...>;
1042 tuple(pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1044 tuple(allocator_arg_t, _Alloc, _Tp...) -> tuple<_Tp...>;
1046 tuple(allocator_arg_t, _Alloc, pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1048 tuple(allocator_arg_t, _Alloc, tuple<_Tp...>) -> tuple<_Tp...>;
1052 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(tuple<_Tp...>& __t, tuple<_Tp.…
1060 swap(const tuple<_Tp...>& __lhs,
1061 const tuple<_Tp...>& __rhs) noexcept(__all<is_nothrow_swappable_v<const _Tp>...>::value) {
1069 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Ip, tuple<_Tp...…
1070 get(tuple<_Tp...>& __t) _NOEXCEPT {
1071 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1076 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Ip, tuple<…
1077 get(const tuple<_Tp...>& __t) _NOEXCEPT {
1078 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1083 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 typename tuple_element<_Ip, tuple<_Tp...…
1084 get(tuple<_Tp...>&& __t) _NOEXCEPT {
1085 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1090 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const typename tuple_element<_Ip, tuple<…
1091 get(const tuple<_Tp...>&& __t) _NOEXCEPT {
1092 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1133 inline _LIBCPP_HIDE_FROM_ABI constexpr _T1& get(tuple<_Args...>& __tup) noexcept {
1138 inline _LIBCPP_HIDE_FROM_ABI constexpr _T1 const& get(tuple<_Args...> const& __tup) noexcept {
1143 inline _LIBCPP_HIDE_FROM_ABI constexpr _T1&& get(tuple<_Args...>&& __tup) noexcept {
1148 inline _LIBCPP_HIDE_FROM_ABI constexpr _T1 const&& get(tuple<_Args...> const&& __tup) noexcept {
1157 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<_Tp&...> tie(_Tp&... __t) _NOEXCEP…
1158 return tuple<_Tp&...>(__t...);
1178 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<typename __unwrap_ref_decay<_Tp>::…
1180 return tuple<typename __unwrap_ref_decay<_Tp>::type...>(std::forward<_Tp>(__t)...);
1184 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<_Tp&&...> forward_as_tuple(_Tp&&..…
1185 return tuple<_Tp&&...>(std::forward<_Tp>(__t)...);
1206 operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1217 __tuple_compare_three_way(const tuple<_Tp...>& __x, const tuple<_Up...>& __y, index_sequence<_Is...…
1227 operator<=>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1235 operator!=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1262 operator<(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1269 operator>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1275 operator>=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1281 operator<=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
1293 struct __tuple_cat_type<tuple<_Ttypes...>, __tuple_types<_Utypes...> > {
1294 typedef _LIBCPP_NODEBUG tuple<_Ttypes..., _Utypes...> type;
1301 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0> {
1303 typename __tuple_cat_type< tuple<_Types...>,
1308 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0, _Tuple1, _Tuples...>
1310 typename __tuple_cat_type< tuple<_Types...>,
1321 : public __tuple_cat_return_1<tuple<>,
1328 typedef _LIBCPP_NODEBUG tuple<> type;
1331 inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 tuple<> tuple_cat() { return tuple<>(); }
1337 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0> {
1339 typedef tuple<_Types..., __apply_cv_t<_Tuple0, typename tuple_element<_I0, _T0>::type>&&...> type;
1343 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0, _Tuple1, _Tup…
1345 tuple<_Types...,
1354 tuple<>,
1363 struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J0...> > {
1366 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&>::type
1367 operator()(tuple<_Types...> __t, _Tuple0&& __t0) {
1375 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&, _Tuple1&&, _Tuples&&...>::type
1376 operator()(tuple<_Types...> __t, _Tuple0&& __t0, _Tuple1&& __t1, _Tuples&&... __tpls) {
1380 …return __tuple_cat<tuple<_Types..., __apply_cv_t<_Tuple0, typename tuple_element<_J0, _T0>::type>&…
1394 …return __tuple_cat<tuple<>, __tuple_indices<>, typename __make_tuple_indices<tuple_size<_T0>::valu…
1395 tuple<>(), std::forward<_Tuple0>(__t0), std::forward<_Tuples>(__tpls)...);
1399 struct _LIBCPP_TEMPLATE_VIS uses_allocator<tuple<_Tp...>, _Alloc> : true_type {};
1405 tuple<_Args1...>& __first_args,
1406 tuple<_Args2...>& __second_args,