Lines Matching refs:tuple

14     tuple synopsis
20 class tuple {
22 explicit(see-below) constexpr tuple();
23 explicit(see-below) tuple(const T&...); // constexpr in C++14
25 explicit(see-below) tuple(U&&...); // constexpr in C++14
26 tuple(const tuple&) = default;
27 tuple(tuple&&) = default;
30 constexpr explicit(see-below) tuple(tuple<UTypes...>&); // C++23
32 explicit(see-below) tuple(const tuple<U...>&); // constexpr in C++14
34 explicit(see-below) tuple(tuple<U...>&&); // constexpr in C++14
36 constexpr explicit(see-below) tuple(const tuple<UTypes...>&&); // C++23
39 constexpr explicit(see-below) tuple(pair<U1, U2>&); // iff sizeof...(Types) == 2 // C++23
41 … explicit(see-below) tuple(const pair<U1, U2>&); // iff sizeof...(T) == 2 // constexpr in C++14
43 explicit(see-below) tuple(pair<U1, U2>&&); // iff sizeof...(T) == 2 // constexpr in C++14
45 … constexpr explicit(see-below) tuple(const pair<U1, U2>&&); // iff sizeof...(Types) == 2 // C++23
49 tuple(allocator_arg_t, const Alloc& a);
51 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, const T&...); // constexpr in …
53 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, U&&...); // constexpr in …
55tuple(allocator_arg_t, const Alloc& a, const tuple&); // constexpr in …
57tuple(allocator_arg_t, const Alloc& a, tuple&&); // constexpr in …
60 tuple(allocator_arg_t, const Alloc& a, tuple<UTypes...>&); // C++23
62 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, const tuple<U...>&); // constexpr in …
64 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, tuple<U...>&&); // constexpr in …
67 tuple(allocator_arg_t, const Alloc& a, const tuple<UTypes...>&&); // C++23
70 tuple(allocator_arg_t, const Alloc& a, pair<U1, U2>&); // C++23
72 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, const pair<U1, U2>&); // constexpr in …
74 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, pair<U1, U2>&&); // constexpr in …
77 tuple(allocator_arg_t, const Alloc& a, const pair<U1, U2>&&); // C++23
79tuple& operator=(const tuple&); // constexpr…
80 constexpr const tuple& operator=(const tuple&) const; // C++23
81tuple& operator=(tuple&&) noexcept(is_nothrow_move_assignable_v<T> && ...); // constexpr…
82 constexpr const tuple& operator=(tuple&&) const; // C++23
84tuple& operator=(const tuple<U...>&); // constexpr in …
86 constexpr const tuple& operator=(const tuple<UTypes...>&) const; // C++23
88tuple& operator=(tuple<U...>&&); // constexpr in …
90 constexpr const tuple& operator=(tuple<UTypes...>&&) const; // C++23
92tuple& operator=(const pair<U1, U2>&); // iff sizeof...(T) == 2 // constexpr in …
94 …constexpr const tuple& operator=(const pair<U1, U2>&) const; // iff sizeof...(Types) == 2 // C++…
96tuple& operator=(pair<U1, U2>&&); // iff sizeof...(T) == 2 // constexpr in …
98 … constexpr const tuple& operator=(pair<U1, U2>&&) const; // iff sizeof...(Types) == 2 // C++23
101 tuple& operator=(array<U, N> const&) // iff sizeof...(T) == N, EXTENSION
103 tuple& operator=(array<U, N>&&) // iff sizeof...(T) == N, EXTENSION
105 …void swap(tuple&) noexcept(AND(swap(declval<T&>(), declval<T&>())...)); // constexpr…
106 constexpr void swap(const tuple&) const noexcept(see-below); // C++23
111 requires requires { typename tuple<common_reference_t<TQual<TTypes>, UQual<UTypes>>...>; }
112 struct basic_common_reference<tuple<TTypes...>, tuple<UTypes...>, TQual, UQual> {
113 using type = tuple<common_reference_t<TQual<TTypes>, UQual<UTypes>>...>;
117 requires requires { typename tuple<common_type_t<TTypes, UTypes>...>; }
118 struct common_type<tuple<TTypes...>, tuple<UTypes...>> {
119 using type = tuple<common_type_t<TTypes, UTypes>...>;
123 tuple(T...) -> tuple<T...>; // since C++17
125 tuple(pair<T1, T2>) -> tuple<T1, T2>; // since C++17
127 tuple(allocator_arg_t, Alloc, T...) -> tuple<T...>; // since C++17
129 tuple(allocator_arg_t, Alloc, pair<T1, T2>) -> tuple<T1, T2>; // since C++17
131 tuple(allocator_arg_t, Alloc, tuple<T...>) -> tuple<T...>; // since C++17
135 template <class... T> tuple<V...> make_tuple(T&&...); // constexpr in C++14
136 template <class... T> tuple<ATypes...> forward_as_tuple(T&&...) noexcept; // constexpr in C++14
137 template <class... T> tuple<T&...> tie(T&...) noexcept; // constexpr in C++14
138 template <class... Tuples> tuple<CTypes...> tuple_cat(Tuples&&... tpls); // constexpr in C++14
140 // [tuple.apply], calling a function with a tuple of arguments:
146 // 20.4.1.4, tuple helper classes:
148 template <class... T> struct tuple_size<tuple<T...>>;
152 template <size_t I, class... T> struct tuple_element<I, tuple<T...>>;
158 typename tuple_element<I, tuple<T...>>::type&
159 get(tuple<T...>&) noexcept; // constexpr in C++14
161 const typename tuple_element<I, tuple<T...>>::type&
162 get(const tuple<T...>&) noexcept; // constexpr in C++14
164 typename tuple_element<I, tuple<T...>>::type&&
165 get(tuple<T...>&&) noexcept; // constexpr in C++14
167 const typename tuple_element<I, tuple<T...>>::type&&
168 get(const tuple<T...>&&) noexcept; // constexpr in C++14
171 constexpr T1& get(tuple<T...>&) noexcept; // C++14
173 constexpr const T1& get(const tuple<T...>&) noexcept; // C++14
175 constexpr T1&& get(tuple<T...>&&) noexcept; // C++14
177 constexpr const T1&& get(const tuple<T...>&&) noexcept; // C++14
180 template<class... T, class... U> bool operator==(const tuple<T...>&, const tuple<U...>&); // conste…
181 template<class... T, class... U> bool operator<(const tuple<T...>&, const tuple<U...>&); // conste…
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…
188 …operator<=>(const tuple<T...>&, const tuple<U...>&); // since C++…
191 struct uses_allocator<tuple<Types...>, Alloc>;
195 swap(tuple<Types...>& x, tuple<Types...>& y) noexcept(noexcept(x.swap(y)));
198 …constexpr void swap(const tuple<Types...>& x, const tuple<Types...>& y) noexcept(see-below); // …
258 // [tuple.syn]
312 "Attempted to default construct a reference element in a tuple");}
319 "Attempted to default construct a reference element in a tuple");}
326 "Attempted to default construct a reference element in a tuple");}
333 "Attempted to default construct a reference element in a tuple");}
361 "Attempted to uses-allocator construct a reference element in a tuple");}
368 "Attempted to uses-allocator construct a reference element in a tuple");}
513 class = __enable_if_t<__tuple_constructible<_Tuple, tuple<_Tp...> >::value>
523 class = __enable_if_t<__tuple_constructible<_Tuple, tuple<_Tp...> >::value>
566 class _LIBCPP_TEMPLATE_VIS tuple
573 typename tuple_element<_Jp, tuple<_Up...> >::type& get(tuple<_Up...>&) _NOEXCEPT;
575 … const typename tuple_element<_Jp, tuple<_Up...> >::type& get(const tuple<_Up...>&) _NOEXCEPT;
577 typename tuple_element<_Jp, tuple<_Up...> >::type&& get(tuple<_Up...>&&) _NOEXCEPT;
579 … const typename tuple_element<_Jp, tuple<_Up...> >::type&& get(const tuple<_Up...>&&) _NOEXCEPT;
581 // [tuple.cnstr]
583 // tuple() constructors (including allocator_arg_t variants)
590 tuple()
602 explicit tuple()
612 tuple(allocator_arg_t, _Alloc const& __a)
627 explicit tuple(allocator_arg_t, _Alloc const& __a)
633 // tuple(const T&...) constructors (including allocator_arg_t variants)
642 tuple(const _Tp& ... __t)
645 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
647 typename __make_tuple_types<tuple, 0>::type(),
659 explicit tuple(const _Tp& ... __t)
662 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
664 typename __make_tuple_types<tuple, 0>::type(),
676 tuple(allocator_arg_t, const _Alloc& __a, const _Tp& ... __t)
679 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
681 typename __make_tuple_types<tuple, 0>::type(),
693 explicit tuple(allocator_arg_t, const _Alloc& __a, const _Tp& ... __t)
696 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
698 typename __make_tuple_types<tuple, 0>::type(),
702 // tuple(U&& ...) constructors (including allocator_arg_t variants)
704 template <class _Up> struct _IsThisTuple<_Up> : is_same<__remove_cvref_t<_Up>, tuple> { };
721 tuple(_Up&&... __u)
724 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
726 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
737 explicit tuple(_Up&&... __u)
740 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
742 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
753 tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
756 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
758 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
769 explicit tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
772 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
774 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
778 tuple(const tuple&) = default;
779 tuple(tuple&&) = default;
785 tuple(allocator_arg_t, const _Alloc& __alloc, const tuple& __t)
793 tuple(allocator_arg_t, const _Alloc& __alloc, tuple&& __t)
797 // tuple(const tuple<U...>&) constructors (including allocator_arg_t variants)
803 struct _EnableCtorFromUTypesTuple<_OtherTuple, tuple<_Up...>,
808 _Not<is_same<_OtherTuple, const tuple&> >,
809 _Not<is_same<_OtherTuple, tuple&&> >,
824 _EnableCtorFromUTypesTuple<const tuple<_Up...>&>,
829 tuple(const tuple<_Up...>& __t)
836 _EnableCtorFromUTypesTuple<const tuple<_Up...>&>,
841 explicit tuple(const tuple<_Up...>& __t)
848 _EnableCtorFromUTypesTuple<const tuple<_Up...>&>,
853 tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
859 _EnableCtorFromUTypesTuple<const tuple<_Up...>&>,
864 explicit tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
869 // tuple(tuple<U...>&) constructors (including allocator_arg_t variants)
872 _EnableCtorFromUTypesTuple<tuple<_Up...>&>::value>* = nullptr>
875 tuple(tuple<_Up...>& __t) : __base_(__t) {}
878 _EnableCtorFromUTypesTuple<tuple<_Up...>&>::value>* = nullptr>
881tuple(allocator_arg_t, const _Alloc& __alloc, tuple<_Up...>& __t) : __base_(allocator_arg_t(), __a…
884 // tuple(tuple<U...>&&) constructors (including allocator_arg_t variants)
888 _EnableCtorFromUTypesTuple<tuple<_Up...>&&>,
893 tuple(tuple<_Up...>&& __t)
900 _EnableCtorFromUTypesTuple<tuple<_Up...>&&>,
905 explicit tuple(tuple<_Up...>&& __t)
912 _EnableCtorFromUTypesTuple<tuple<_Up...>&&>,
917 tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
923 _EnableCtorFromUTypesTuple<tuple<_Up...>&&>,
928 explicit tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
933 // tuple(const tuple<U...>&&) constructors (including allocator_arg_t variants)
936 _EnableCtorFromUTypesTuple<const tuple<_Up...>&&>::value>* = nullptr>
939 tuple(const tuple<_Up...>&& __t) : __base_(std::move(__t)) {}
942 _EnableCtorFromUTypesTuple<const tuple<_Up...>&&>::value>* = nullptr>
945 tuple(allocator_arg_t, const _Alloc& __alloc, const tuple<_Up...>&& __t)
949 // tuple(const pair<U1, U2>&) constructors (including allocator_arg_t variants)
951 …ss...> class Pred, class _Pair, class _DecayedPair = __remove_cvref_t<_Pair>, class _Tuple = tuple>
955 struct _CtorPredicateFromPair<Pred, _Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> > : _And<
966 template <class _Pair, class _DecayedPair = __remove_cvref_t<_Pair>, class _Tuple = tuple>
970 struct _BothImplicitlyConvertible<_Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> > : _And<
982 tuple(const pair<_Up1, _Up2>& __p)
994 explicit tuple(const pair<_Up1, _Up2>& __p)
1006 tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
1017 explicit tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
1022 // tuple(pair<U1, U2>&) constructors (including allocator_arg_t variants)
1028 tuple(pair<_U1, _U2>& __p) : __base_(__p) {}
1034tuple(allocator_arg_t, const _Alloc& __alloc, pair<_U1, _U2>& __p) : __base_(allocator_arg_t(), __…
1037 // tuple(pair<U1, U2>&&) constructors (including allocator_arg_t variants)
1046 tuple(pair<_Up1, _Up2>&& __p)
1058 explicit tuple(pair<_Up1, _Up2>&& __p)
1070 tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
1081 explicit tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
1086 // tuple(const pair<U1, U2>&&) constructors (including allocator_arg_t variants)
1092 tuple(const pair<_U1, _U2>&& __p) : __base_(std::move(__p)) {}
1098 tuple(allocator_arg_t, const _Alloc& __alloc, const pair<_U1, _U2>&& __p)
1102 // [tuple.assign]
1104 tuple& operator=(_If<_And<is_copy_assignable<_Tp>...>::value, tuple, __nat> const& __tuple)
1114 const tuple& operator=(tuple const& __tuple) const
1121 const tuple& operator=(tuple&& __tuple) const
1132 tuple& operator=(_If<_And<is_move_assignable<_Tp>...>::value, tuple, __nat>&& __tuple)
1148 tuple& operator=(tuple<_Up...> const& __tuple)
1163 tuple& operator=(tuple<_Up...>&& __tuple)
1178 const tuple& operator=(const tuple<_UTypes...>& __u) const {
1189 const tuple& operator=(tuple<_UTypes...>&& __u) const {
1199 class _Pair, class _DecayedPair = __remove_cvref_t<_Pair>, class _Tuple = tuple>
1204 struct _AssignPredicateFromPair<Pred, _Const, _Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> > :
1219 const tuple& operator=(const pair<_U1, _U2>& __pair) const
1229 const tuple& operator=(pair<_U1, _U2>&& __pair) const
1241 tuple& operator=(pair<_Up1, _Up2> const& __pair)
1253 tuple& operator=(pair<_Up1, _Up2>&& __pair)
1269 tuple& operator=(array<_Up, _Np> const& __array)
1285 tuple& operator=(array<_Up, _Np>&& __array)
1294 // [tuple.swap]
1296 void swap(tuple& __t) _NOEXCEPT_(__all<__is_nothrow_swappable<_Tp>::value...>::value)
1301 … void swap(const tuple& __t) const noexcept(__all<is_nothrow_swappable_v<const _Tp&>...>::value) {
1308 class _LIBCPP_TEMPLATE_VIS tuple<>
1312 tuple() _NOEXCEPT = default;
1315 tuple(allocator_arg_t, const _Alloc&) _NOEXCEPT {}
1318 tuple(allocator_arg_t, const _Alloc&, const tuple&) _NOEXCEPT {}
1321 tuple(array<_Up, 0>) _NOEXCEPT {}
1324 tuple(allocator_arg_t, const _Alloc&, array<_Up, 0>) _NOEXCEPT {}
1326 void swap(tuple&) _NOEXCEPT {}
1328 _LIBCPP_HIDE_FROM_ABI constexpr void swap(const tuple&) const noexcept {}
1334 requires requires { typename tuple<common_reference_t<_TQual<_TTypes>, _UQual<_UTypes>>...>; }
1335 struct basic_common_reference<tuple<_TTypes...>, tuple<_UTypes...>, _TQual, _UQual> {
1336 using type = tuple<common_reference_t<_TQual<_TTypes>, _UQual<_UTypes>>...>;
1340 requires requires { typename tuple<common_type_t<_TTypes, _UTypes>...>; }
1341 struct common_type<tuple<_TTypes...>, tuple<_UTypes...>> {
1342 using type = tuple<common_type_t<_TTypes, _UTypes>...>;
1348 tuple(_Tp...) -> tuple<_Tp...>;
1350 tuple(pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1352 tuple(allocator_arg_t, _Alloc, _Tp...) -> tuple<_Tp...>;
1354 tuple(allocator_arg_t, _Alloc, pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1356 tuple(allocator_arg_t, _Alloc, tuple<_Tp...>) -> tuple<_Tp...>;
1362 swap(tuple<_Tp...>& __t, tuple<_Tp...>& __u)
1370 swap(const tuple<_Tp...>& __lhs, const tuple<_Tp...>& __rhs)
1380 typename tuple_element<_Ip, tuple<_Tp...> >::type&
1381 get(tuple<_Tp...>& __t) _NOEXCEPT
1383 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1389 const typename tuple_element<_Ip, tuple<_Tp...> >::type&
1390 get(const tuple<_Tp...>& __t) _NOEXCEPT
1392 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1398 typename tuple_element<_Ip, tuple<_Tp...> >::type&&
1399 get(tuple<_Tp...>&& __t) _NOEXCEPT
1401 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1408 const typename tuple_element<_Ip, tuple<_Tp...> >::type&&
1409 get(const tuple<_Tp...>&& __t) _NOEXCEPT
1411 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1458 constexpr _T1& get(tuple<_Args...>& __tup) noexcept
1465 constexpr _T1 const& get(tuple<_Args...> const& __tup) noexcept
1472 constexpr _T1&& get(tuple<_Args...>&& __tup) noexcept
1479 constexpr _T1 const&& get(tuple<_Args...> const&& __tup) noexcept
1490 tuple<_Tp&...>
1493 return tuple<_Tp&...>(__t...);
1510 tuple<typename __unwrap_ref_decay<_Tp>::type...>
1513 return tuple<typename __unwrap_ref_decay<_Tp>::type...>(_VSTD::forward<_Tp>(__t)...);
1518 tuple<_Tp&&...>
1521 return tuple<_Tp&&...>(_VSTD::forward<_Tp>(__t)...);
1549 operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1562 __tuple_compare_three_way(const tuple<_Tp...>& __x, const tuple<_Up...>& __y, index_sequence<_Is...…
1572 operator<=>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1582 operator!=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1617 operator<(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1626 operator>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1634 operator>=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1642 operator<=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1654 struct __tuple_cat_type<tuple<_Ttypes...>, __tuple_types<_Utypes...> >
1656 typedef _LIBCPP_NODEBUG tuple<_Ttypes..., _Utypes...> type;
1665 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0>
1668 tuple<_Types...>,
1674 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0, _Tuple1, _Tuples...>
1677 tuple<_Types...>,
1689 : public __tuple_cat_return_1<tuple<>,
1698 typedef _LIBCPP_NODEBUG tuple<> type;
1702 tuple<>
1705 return tuple<>();
1712 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0>
1715 typedef tuple<_Types..., typename __apply_cv<_Tuple0,
1720 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>,
1723 tuple<_Types..., typename __apply_cv<_Tuple0,
1733 : public __tuple_cat_return_ref_imp<tuple<>,
1744 struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J0...> >
1748 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&>::type
1749 operator()(tuple<_Types...> __t, _Tuple0&& __t0)
1759 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&, _Tuple1&&, _Tuples&&...>::type
1760 operator()(tuple<_Types...> __t, _Tuple0&& __t0, _Tuple1&& __t1, _Tuples&& ...__tpls)
1766 tuple<_Types...,
1785 return __tuple_cat<tuple<>, __tuple_indices<>,
1787 (tuple<>(), _VSTD::forward<_Tuple0>(__t0),
1792 struct _LIBCPP_TEMPLATE_VIS uses_allocator<tuple<_Tp...>, _Alloc>
1799 tuple<_Args1...>& __first_args, tuple<_Args2...>& __second_args,