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); // …
284 "Attempted to default construct a reference element in a tuple");}
291 "Attempted to default construct a reference element in a tuple");}
298 "Attempted to default construct a reference element in a tuple");}
305 "Attempted to default construct a reference element in a tuple");}
333 "Attempted to uses-allocator construct a reference element in a tuple");}
340 "Attempted to uses-allocator construct a reference element in a tuple");}
485 class = __enable_if_t<__tuple_constructible<_Tuple, tuple<_Tp...> >::value>
495 class = __enable_if_t<__tuple_constructible<_Tuple, tuple<_Tp...> >::value>
538 class _LIBCPP_TEMPLATE_VIS tuple
545 typename tuple_element<_Jp, tuple<_Up...> >::type& get(tuple<_Up...>&) _NOEXCEPT;
547 … const typename tuple_element<_Jp, tuple<_Up...> >::type& get(const tuple<_Up...>&) _NOEXCEPT;
549 typename tuple_element<_Jp, tuple<_Up...> >::type&& get(tuple<_Up...>&&) _NOEXCEPT;
551 … const typename tuple_element<_Jp, tuple<_Up...> >::type&& get(const tuple<_Up...>&&) _NOEXCEPT;
553 // [tuple.cnstr]
555 // tuple() constructors (including allocator_arg_t variants)
562 tuple()
574 explicit tuple()
584 tuple(allocator_arg_t, _Alloc const& __a)
599 explicit tuple(allocator_arg_t, _Alloc const& __a)
605 // tuple(const T&...) constructors (including allocator_arg_t variants)
614 tuple(const _Tp& ... __t)
617 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
619 typename __make_tuple_types<tuple, 0>::type(),
631 explicit tuple(const _Tp& ... __t)
634 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
636 typename __make_tuple_types<tuple, 0>::type(),
648 tuple(allocator_arg_t, const _Alloc& __a, const _Tp& ... __t)
651 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
653 typename __make_tuple_types<tuple, 0>::type(),
665 explicit tuple(allocator_arg_t, const _Alloc& __a, const _Tp& ... __t)
668 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
670 typename __make_tuple_types<tuple, 0>::type(),
674 // tuple(U&& ...) constructors (including allocator_arg_t variants)
676 template <class _Up> struct _IsThisTuple<_Up> : is_same<__uncvref_t<_Up>, tuple> { };
693 tuple(_Up&&... __u)
696 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
698 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
709 explicit tuple(_Up&&... __u)
712 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
714 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
725 tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
728 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
730 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
741 explicit tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
744 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
746 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
750 tuple(const tuple&) = default;
751 tuple(tuple&&) = default;
757 tuple(allocator_arg_t, const _Alloc& __alloc, const tuple& __t)
765 tuple(allocator_arg_t, const _Alloc& __alloc, tuple&& __t)
769 // tuple(const tuple<U...>&) constructors (including allocator_arg_t variants)
775 struct _EnableCtorFromUTypesTuple<_OtherTuple, tuple<_Up...>,
780 _Not<is_same<_OtherTuple, const tuple&> >,
781 _Not<is_same<_OtherTuple, tuple&&> >,
796 _EnableCtorFromUTypesTuple<const tuple<_Up...>&>,
801 tuple(const tuple<_Up...>& __t)
808 _EnableCtorFromUTypesTuple<const tuple<_Up...>&>,
813 explicit tuple(const tuple<_Up...>& __t)
820 _EnableCtorFromUTypesTuple<const tuple<_Up...>&>,
825 tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
831 _EnableCtorFromUTypesTuple<const tuple<_Up...>&>,
836 explicit tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
841 // tuple(tuple<U...>&) constructors (including allocator_arg_t variants)
844 _EnableCtorFromUTypesTuple<tuple<_Up...>&>::value>* = nullptr>
847 tuple(tuple<_Up...>& __t) : __base_(__t) {}
850 _EnableCtorFromUTypesTuple<tuple<_Up...>&>::value>* = nullptr>
853tuple(allocator_arg_t, const _Alloc& __alloc, tuple<_Up...>& __t) : __base_(allocator_arg_t(), __a…
856 // tuple(tuple<U...>&&) constructors (including allocator_arg_t variants)
860 _EnableCtorFromUTypesTuple<tuple<_Up...>&&>,
865 tuple(tuple<_Up...>&& __t)
872 _EnableCtorFromUTypesTuple<tuple<_Up...>&&>,
877 explicit tuple(tuple<_Up...>&& __t)
884 _EnableCtorFromUTypesTuple<tuple<_Up...>&&>,
889 tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
895 _EnableCtorFromUTypesTuple<tuple<_Up...>&&>,
900 explicit tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
905 // tuple(const tuple<U...>&&) constructors (including allocator_arg_t variants)
908 _EnableCtorFromUTypesTuple<const tuple<_Up...>&&>::value>* = nullptr>
911 tuple(const tuple<_Up...>&& __t) : __base_(std::move(__t)) {}
914 _EnableCtorFromUTypesTuple<const tuple<_Up...>&&>::value>* = nullptr>
917 tuple(allocator_arg_t, const _Alloc& __alloc, const tuple<_Up...>&& __t)
921 // tuple(const pair<U1, U2>&) constructors (including allocator_arg_t variants)
923 … <class...> class Pred, class _Pair, class _DecayedPair = __uncvref_t<_Pair>, class _Tuple = tuple>
927 struct _CtorPredicateFromPair<Pred, _Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> > : _And<
938 template <class _Pair, class _DecayedPair = __uncvref_t<_Pair>, class _Tuple = tuple>
942 struct _BothImplicitlyConvertible<_Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> > : _And<
954 tuple(const pair<_Up1, _Up2>& __p)
966 explicit tuple(const pair<_Up1, _Up2>& __p)
978 tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
989 explicit tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
994 // tuple(pair<U1, U2>&) constructors (including allocator_arg_t variants)
1000 tuple(pair<_U1, _U2>& __p) : __base_(__p) {}
1006tuple(allocator_arg_t, const _Alloc& __alloc, pair<_U1, _U2>& __p) : __base_(allocator_arg_t(), __…
1009 // tuple(pair<U1, U2>&&) constructors (including allocator_arg_t variants)
1018 tuple(pair<_Up1, _Up2>&& __p)
1030 explicit tuple(pair<_Up1, _Up2>&& __p)
1042 tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
1053 explicit tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
1058 // tuple(const pair<U1, U2>&&) constructors (including allocator_arg_t variants)
1064 tuple(const pair<_U1, _U2>&& __p) : __base_(std::move(__p)) {}
1070 tuple(allocator_arg_t, const _Alloc& __alloc, const pair<_U1, _U2>&& __p)
1074 // [tuple.assign]
1076 tuple& operator=(_If<_And<is_copy_assignable<_Tp>...>::value, tuple, __nat> const& __tuple)
1086 const tuple& operator=(tuple const& __tuple) const
1093 const tuple& operator=(tuple&& __tuple) const
1104 tuple& operator=(_If<_And<is_move_assignable<_Tp>...>::value, tuple, __nat>&& __tuple)
1120 tuple& operator=(tuple<_Up...> const& __tuple)
1135 tuple& operator=(tuple<_Up...>&& __tuple)
1150 const tuple& operator=(const tuple<_UTypes...>& __u) const {
1161 const tuple& operator=(tuple<_UTypes...>&& __u) const {
1171 class _Pair, class _DecayedPair = __uncvref_t<_Pair>, class _Tuple = tuple>
1176 struct _AssignPredicateFromPair<Pred, _Const, _Pair, pair<_Up1, _Up2>, tuple<_Tp1, _Tp2> > :
1191 const tuple& operator=(const pair<_U1, _U2>& __pair) const
1201 const tuple& operator=(pair<_U1, _U2>&& __pair) const
1213 tuple& operator=(pair<_Up1, _Up2> const& __pair)
1225 tuple& operator=(pair<_Up1, _Up2>&& __pair)
1241 tuple& operator=(array<_Up, _Np> const& __array)
1257 tuple& operator=(array<_Up, _Np>&& __array)
1266 // [tuple.swap]
1268 void swap(tuple& __t) _NOEXCEPT_(__all<__is_nothrow_swappable<_Tp>::value...>::value)
1273 … void swap(const tuple& __t) const noexcept(__all<is_nothrow_swappable_v<const _Tp&>...>::value) {
1280 class _LIBCPP_TEMPLATE_VIS tuple<>
1284 tuple() _NOEXCEPT = default;
1287 tuple(allocator_arg_t, const _Alloc&) _NOEXCEPT {}
1290 tuple(allocator_arg_t, const _Alloc&, const tuple&) _NOEXCEPT {}
1293 tuple(array<_Up, 0>) _NOEXCEPT {}
1296 tuple(allocator_arg_t, const _Alloc&, array<_Up, 0>) _NOEXCEPT {}
1298 void swap(tuple&) _NOEXCEPT {}
1300 _LIBCPP_HIDE_FROM_ABI constexpr void swap(const tuple&) const noexcept {}
1306 requires requires { typename tuple<common_reference_t<_TQual<_TTypes>, _UQual<_UTypes>>...>; }
1307 struct basic_common_reference<tuple<_TTypes...>, tuple<_UTypes...>, _TQual, _UQual> {
1308 using type = tuple<common_reference_t<_TQual<_TTypes>, _UQual<_UTypes>>...>;
1312 requires requires { typename tuple<common_type_t<_TTypes, _UTypes>...>; }
1313 struct common_type<tuple<_TTypes...>, tuple<_UTypes...>> {
1314 using type = tuple<common_type_t<_TTypes, _UTypes>...>;
1320 tuple(_Tp...) -> tuple<_Tp...>;
1322 tuple(pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1324 tuple(allocator_arg_t, _Alloc, _Tp...) -> tuple<_Tp...>;
1326 tuple(allocator_arg_t, _Alloc, pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1328 tuple(allocator_arg_t, _Alloc, tuple<_Tp...>) -> tuple<_Tp...>;
1334 swap(tuple<_Tp...>& __t, tuple<_Tp...>& __u)
1342 swap(const tuple<_Tp...>& __lhs, const tuple<_Tp...>& __rhs)
1352 typename tuple_element<_Ip, tuple<_Tp...> >::type&
1353 get(tuple<_Tp...>& __t) _NOEXCEPT
1355 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1361 const typename tuple_element<_Ip, tuple<_Tp...> >::type&
1362 get(const tuple<_Tp...>& __t) _NOEXCEPT
1364 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1370 typename tuple_element<_Ip, tuple<_Tp...> >::type&&
1371 get(tuple<_Tp...>&& __t) _NOEXCEPT
1373 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1380 const typename tuple_element<_Ip, tuple<_Tp...> >::type&&
1381 get(const tuple<_Tp...>&& __t) _NOEXCEPT
1383 typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1430 constexpr _T1& get(tuple<_Args...>& __tup) noexcept
1437 constexpr _T1 const& get(tuple<_Args...> const& __tup) noexcept
1444 constexpr _T1&& get(tuple<_Args...>&& __tup) noexcept
1451 constexpr _T1 const&& get(tuple<_Args...> const&& __tup) noexcept
1462 tuple<_Tp&...>
1465 return tuple<_Tp&...>(__t...);
1482 tuple<typename __unwrap_ref_decay<_Tp>::type...>
1485 return tuple<typename __unwrap_ref_decay<_Tp>::type...>(_VSTD::forward<_Tp>(__t)...);
1490 tuple<_Tp&&...>
1493 return tuple<_Tp&&...>(_VSTD::forward<_Tp>(__t)...);
1521 operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1534 __tuple_compare_three_way(const tuple<_Tp...>& __x, const tuple<_Up...>& __y, index_sequence<_Is...…
1544 operator<=>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1554 operator!=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1589 operator<(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1598 operator>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1606 operator>=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1614 operator<=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1626 struct __tuple_cat_type<tuple<_Ttypes...>, __tuple_types<_Utypes...> >
1628 typedef _LIBCPP_NODEBUG tuple<_Ttypes..., _Utypes...> type;
1637 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0>
1640 tuple<_Types...>,
1646 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0, _Tuple1, _Tuples...>
1649 tuple<_Types...>,
1661 : public __tuple_cat_return_1<tuple<>,
1670 typedef _LIBCPP_NODEBUG tuple<> type;
1674 tuple<>
1677 return tuple<>();
1684 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0>
1687 typedef tuple<_Types..., typename __apply_cv<_Tuple0,
1692 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>,
1695 tuple<_Types..., typename __apply_cv<_Tuple0,
1706 : public __tuple_cat_return_ref_imp<tuple<>,
1717 struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J0...> >
1721 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&>::type
1722 operator()(tuple<_Types...> __t, _Tuple0&& __t0)
1732 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&, _Tuple1&&, _Tuples&&...>::type
1733 operator()(tuple<_Types...> __t, _Tuple0&& __t0, _Tuple1&& __t1, _Tuples&& ...__tpls)
1739 tuple<_Types...,
1758 return __tuple_cat<tuple<>, __tuple_indices<>,
1760 (tuple<>(), _VSTD::forward<_Tuple0>(__t0),
1765 struct _LIBCPP_TEMPLATE_VIS uses_allocator<tuple<_Tp...>, _Alloc>
1772 tuple<_Args1...>& __first_args, tuple<_Args2...>& __second_args,