Lines Matching refs:tuple
2 //===--------------------------- 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;
29 explicit(see-below) tuple(const tuple<U...>&); // constexpr in C++14
31 explicit(see-below) tuple(tuple<U...>&&); // constexpr in C++14
33 … explicit(see-below) tuple(const pair<U1, U2>&); // iff sizeof...(T) == 2 // constexpr in C++14
35 explicit(see-below) tuple(pair<U1, U2>&&); // iff sizeof...(T) == 2 // constexpr in C++14
39 tuple(allocator_arg_t, const Alloc& a);
41 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, const T&...); // constexpr in …
43 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, U&&...); // constexpr in …
45 …tuple(allocator_arg_t, const Alloc& a, const tuple&); // constexpr in …
47 …tuple(allocator_arg_t, const Alloc& a, tuple&&); // constexpr in …
49 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, const tuple<U...>&); // constexpr in …
51 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, tuple<U...>&&); // constexpr in …
53 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, const pair<U1, U2>&); // constexpr in …
55 …explicit(see-below) tuple(allocator_arg_t, const Alloc& a, pair<U1, U2>&&); // constexpr in …
57 …tuple& operator=(const tuple&); // constexpr…
58 …tuple& operator=(tuple&&) noexcept(is_nothrow_move_assignable_v<T> && ...); // constexpr…
60 …tuple& operator=(const tuple<U...>&); // constexpr in …
62 …tuple& operator=(tuple<U...>&&); // constexpr in …
64 …tuple& operator=(const pair<U1, U2>&); // iff sizeof...(T) == 2 // constexpr in …
66 …tuple& operator=(pair<U1, U2>&&); // iff sizeof...(T) == 2 // constexpr in …
69 tuple& operator=(array<U, N> const&) // iff sizeof...(T) == N, EXTENSION
71 tuple& operator=(array<U, N>&&) // iff sizeof...(T) == N, EXTENSION
73 …void swap(tuple&) noexcept(AND(swap(declval<T&>(), declval<T&>())...)); // constexpr…
77 tuple(T...) -> tuple<T...>; // since C++17
79 tuple(pair<T1, T2>) -> tuple<T1, T2>; // since C++17
81 tuple(allocator_arg_t, Alloc, T...) -> tuple<T...>; // since C++17
83 tuple(allocator_arg_t, Alloc, pair<T1, T2>) -> tuple<T1, T2>; // since C++17
85 tuple(allocator_arg_t, Alloc, tuple<T...>) -> tuple<T...>; // since C++17
89 template <class... T> tuple<V...> make_tuple(T&&...); // constexpr in C++14
90 template <class... T> tuple<ATypes...> forward_as_tuple(T&&...) noexcept; // constexpr in C++14
91 template <class... T> tuple<T&...> tie(T&...) noexcept; // constexpr in C++14
92 template <class... Tuples> tuple<CTypes...> tuple_cat(Tuples&&... tpls); // constexpr in C++14
94 // [tuple.apply], calling a function with a tuple of arguments:
100 // 20.4.1.4, tuple helper classes:
102 template <class... T> struct tuple_size<tuple<T...>>;
106 template <size_t I, class... T> struct tuple_element<I, tuple<T...>>;
112 typename tuple_element<I, tuple<T...>>::type&
113 get(tuple<T...>&) noexcept; // constexpr in C++14
115 const typename tuple_element<I, tuple<T...>>::type&
116 get(const tuple<T...>&) noexcept; // constexpr in C++14
118 typename tuple_element<I, tuple<T...>>::type&&
119 get(tuple<T...>&&) noexcept; // constexpr in C++14
121 const typename tuple_element<I, tuple<T...>>::type&&
122 get(const tuple<T...>&&) noexcept; // constexpr in C++14
125 constexpr T1& get(tuple<T...>&) noexcept; // C++14
127 constexpr const T1& get(const tuple<T...>&) noexcept; // C++14
129 constexpr T1&& get(tuple<T...>&&) noexcept; // C++14
131 constexpr const T1&& get(const tuple<T...>&&) noexcept; // C++14
134 template<class... T, class... U> bool operator==(const tuple<T...>&, const tuple<U...>&); // conste…
135 template<class... T, class... U> bool operator<(const tuple<T...>&, const tuple<U...>&); // conste…
136 template<class... T, class... U> bool operator!=(const tuple<T...>&, const tuple<U...>&); // conste…
137 template<class... T, class... U> bool operator>(const tuple<T...>&, const tuple<U...>&); // conste…
138 template<class... T, class... U> bool operator<=(const tuple<T...>&, const tuple<U...>&); // conste…
139 template<class... T, class... U> bool operator>=(const tuple<T...>&, const tuple<U...>&); // conste…
142 struct uses_allocator<tuple<Types...>, Alloc>;
146 swap(tuple<Types...>& x, tuple<Types...>& y) noexcept(noexcept(x.swap(y)));
210 "Attempted to default construct a reference element in a tuple");}
217 "Attempted to default construct a reference element in a tuple");}
224 "Attempted to default construct a reference element in a tuple");}
231 "Attempted to default construct a reference element in a tuple");}
259 "Attempted to uses-allocator construct a reference element in a tuple");}
266 "Attempted to uses-allocator construct a reference element in a tuple");}
401 __tuple_constructible<_Tuple, tuple<_Tp...> >::value
414 __tuple_constructible<_Tuple, tuple<_Tp...> >::value
451 class _LIBCPP_TEMPLATE_VIS tuple
458 typename tuple_element<_Jp, tuple<_Up...> >::type& get(tuple<_Up...>&) _NOEXCEPT;
460 … const typename tuple_element<_Jp, tuple<_Up...> >::type& get(const tuple<_Up...>&) _NOEXCEPT;
462 typename tuple_element<_Jp, tuple<_Up...> >::type&& get(tuple<_Up...>&&) _NOEXCEPT;
464 … const typename tuple_element<_Jp, tuple<_Up...> >::type&& get(const tuple<_Up...>&&) _NOEXCEPT;
466 // [tuple.cnstr]
468 // tuple() constructors (including allocator_arg_t variants)
475 tuple()
487 explicit tuple()
497 tuple(allocator_arg_t, _Alloc const& __a)
512 explicit tuple(allocator_arg_t, _Alloc const& __a)
518 // tuple(const T&...) constructors (including allocator_arg_t variants)
527 tuple(const _Tp& ... __t)
530 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
532 typename __make_tuple_types<tuple, 0>::type(),
544 explicit tuple(const _Tp& ... __t)
547 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
549 typename __make_tuple_types<tuple, 0>::type(),
561 tuple(allocator_arg_t, const _Alloc& __a, const _Tp& ... __t)
564 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
566 typename __make_tuple_types<tuple, 0>::type(),
578 explicit tuple(allocator_arg_t, const _Alloc& __a, const _Tp& ... __t)
581 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
583 typename __make_tuple_types<tuple, 0>::type(),
587 // tuple(U&& ...) constructors (including allocator_arg_t variants)
589 template <class _Up> struct _IsThisTuple<_Up> : is_same<__uncvref_t<_Up>, tuple> { };
606 tuple(_Up&&... __u)
609 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
611 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
622 explicit tuple(_Up&&... __u)
625 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
627 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
638 tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
641 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
643 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
654 explicit tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
657 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
659 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
663 tuple(const tuple&) = default;
664 tuple(tuple&&) = default;
669 tuple(allocator_arg_t, const _Alloc& __alloc, const tuple& __t)
676 tuple(allocator_arg_t, const _Alloc& __alloc, tuple&& __t)
680 // tuple(const tuple<U...>&) constructors (including allocator_arg_t variants)
683 _Not<is_same<tuple<_Tp...>, tuple<_Up...> > >,
689 _Not<is_convertible<const tuple<_Up>&, _Tp> >...,
690 _Not<is_constructible<_Tp, const tuple<_Up>&> >...
704 tuple(const tuple<_Up...>& __t)
717 explicit tuple(const tuple<_Up...>& __t)
730 tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
742 explicit tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
746 // tuple(tuple<U...>&&) constructors (including allocator_arg_t variants)
749 _Not<is_same<tuple<_Tp...>, tuple<_Up...> > >,
755 _Not<is_convertible<tuple<_Up>, _Tp> >...,
756 _Not<is_constructible<_Tp, tuple<_Up> > >...
770 tuple(tuple<_Up...>&& __t)
783 explicit tuple(tuple<_Up...>&& __t)
796 tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
808 explicit tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
812 // tuple(const pair<U1, U2>&) constructors (including allocator_arg_t variants)
836 tuple(const pair<_Up1, _Up2>& __p)
851 explicit tuple(const pair<_Up1, _Up2>& __p)
866 tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
877 explicit tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
881 // tuple(pair<U1, U2>&&) constructors (including allocator_arg_t variants)
905 tuple(pair<_Up1, _Up2>&& __p)
920 explicit tuple(pair<_Up1, _Up2>&& __p)
935 tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
946 explicit tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
950 // [tuple.assign]
952 tuple& operator=(_If<_And<is_copy_assignable<_Tp>...>::value, tuple, __nat> const& __tuple)
961 tuple& operator=(_If<_And<is_move_assignable<_Tp>...>::value, tuple, __nat>&& __tuple)
977 tuple& operator=(tuple<_Up...> const& __tuple)
992 tuple& operator=(tuple<_Up...>&& __tuple)
1009 tuple& operator=(pair<_Up1, _Up2> const& __pair)
1028 tuple& operator=(pair<_Up1, _Up2>&& __pair)
1047 tuple& operator=(array<_Up, _Np> const& __array)
1063 tuple& operator=(array<_Up, _Np>&& __array)
1072 // [tuple.swap]
1074 void swap(tuple& __t) _NOEXCEPT_(__all<__is_nothrow_swappable<_Tp>::value...>::value)
1079 class _LIBCPP_TEMPLATE_VIS tuple<>
1083 tuple() _NOEXCEPT = default;
1086 tuple(allocator_arg_t, const _Alloc&) _NOEXCEPT {}
1089 tuple(allocator_arg_t, const _Alloc&, const tuple&) _NOEXCEPT {}
1092 tuple(array<_Up, 0>) _NOEXCEPT {}
1095 tuple(allocator_arg_t, const _Alloc&, array<_Up, 0>) _NOEXCEPT {}
1097 void swap(tuple&) _NOEXCEPT {}
1102 tuple(_Tp...) -> tuple<_Tp...>;
1104 tuple(pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1106 tuple(allocator_arg_t, _Alloc, _Tp...) -> tuple<_Tp...>;
1108 tuple(allocator_arg_t, _Alloc, pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1110 tuple(allocator_arg_t, _Alloc, tuple<_Tp...>) -> tuple<_Tp...>;
1120 swap(tuple<_Tp...>& __t, tuple<_Tp...>& __u)
1128 typename tuple_element<_Ip, tuple<_Tp...> >::type&
1129 get(tuple<_Tp...>& __t) _NOEXCEPT
1131 typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1137 const typename tuple_element<_Ip, tuple<_Tp...> >::type&
1138 get(const tuple<_Tp...>& __t) _NOEXCEPT
1140 typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1146 typename tuple_element<_Ip, tuple<_Tp...> >::type&&
1147 get(tuple<_Tp...>&& __t) _NOEXCEPT
1149 typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1156 const typename tuple_element<_Ip, tuple<_Tp...> >::type&&
1157 get(const tuple<_Tp...>&& __t) _NOEXCEPT
1159 typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1206 constexpr _T1& get(tuple<_Args...>& __tup) noexcept
1213 constexpr _T1 const& get(tuple<_Args...> const& __tup) noexcept
1220 constexpr _T1&& get(tuple<_Args...>&& __tup) noexcept
1227 constexpr _T1 const&& get(tuple<_Args...> const&& __tup) noexcept
1238 tuple<_Tp&...>
1241 return tuple<_Tp&...>(__t...);
1258 tuple<typename __unwrap_ref_decay<_Tp>::type...>
1261 return tuple<typename __unwrap_ref_decay<_Tp>::type...>(_VSTD::forward<_Tp>(__t)...);
1266 tuple<_Tp&&...>
1269 return tuple<_Tp&&...>(_VSTD::forward<_Tp>(__t)...);
1297 operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1306 operator!=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1341 operator<(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1350 operator>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1358 operator>=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1366 operator<=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1376 struct __tuple_cat_type<tuple<_Ttypes...>, __tuple_types<_Utypes...> >
1378 typedef _LIBCPP_NODEBUG_TYPE tuple<_Ttypes..., _Utypes...> type;
1387 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0>
1389 typedef _LIBCPP_NODEBUG_TYPE typename __tuple_cat_type<tuple<_Types...>,
1395 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0, _Tuple1, _Tuples...>
1398 tuple<_Types...>,
1410 : public __tuple_cat_return_1<tuple<>,
1419 typedef _LIBCPP_NODEBUG_TYPE tuple<> type;
1423 tuple<>
1426 return tuple<>();
1433 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0>
1436 typedef tuple<_Types..., typename __apply_cv<_Tuple0,
1441 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>,
1444 tuple<_Types..., typename __apply_cv<_Tuple0,
1455 : public __tuple_cat_return_ref_imp<tuple<>,
1466 struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J0...> >
1470 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&>::type
1471 operator()(tuple<_Types...> __t, _Tuple0&& __t0)
1480 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&, _Tuple1&&, _Tuples&&...>::type
1481 operator()(tuple<_Types...> __t, _Tuple0&& __t0, _Tuple1&& __t1, _Tuples&& ...__tpls)
1486 tuple<_Types...,
1505 return __tuple_cat<tuple<>, __tuple_indices<>,
1507 (tuple<>(), _VSTD::forward<_Tuple0>(__t0),
1512 struct _LIBCPP_TEMPLATE_VIS uses_allocator<tuple<_Tp...>, _Alloc>
1519 tuple<_Args1...>& __first_args, tuple<_Args2...>& __second_args,