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 …
45tuple(allocator_arg_t, const Alloc& a, const tuple&); // constexpr in …
47tuple(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 …
57tuple& operator=(const tuple&); // constexpr…
58tuple& operator=(tuple&&) noexcept(is_nothrow_move_assignable_v<T> && ...); // constexpr…
60tuple& operator=(const tuple<U...>&); // constexpr in …
62tuple& operator=(tuple<U...>&&); // constexpr in …
64tuple& operator=(const pair<U1, U2>&); // iff sizeof...(T) == 2 // constexpr in …
66tuple& 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)));
205 "Attempted to default construct a reference element in a tuple");}
212 "Attempted to default construct a reference element in a tuple");}
219 "Attempted to default construct a reference element in a tuple");}
226 "Attempted to default construct a reference element in a tuple");}
254 "Attempted to uses-allocator construct a reference element in a tuple");}
261 "Attempted to uses-allocator construct a reference element in a tuple");}
396 __tuple_constructible<_Tuple, tuple<_Tp...> >::value
409 __tuple_constructible<_Tuple, tuple<_Tp...> >::value
446 class _LIBCPP_TEMPLATE_VIS tuple
453 typename tuple_element<_Jp, tuple<_Up...> >::type& get(tuple<_Up...>&) _NOEXCEPT;
455 … const typename tuple_element<_Jp, tuple<_Up...> >::type& get(const tuple<_Up...>&) _NOEXCEPT;
457 typename tuple_element<_Jp, tuple<_Up...> >::type&& get(tuple<_Up...>&&) _NOEXCEPT;
459 … const typename tuple_element<_Jp, tuple<_Up...> >::type&& get(const tuple<_Up...>&&) _NOEXCEPT;
461 // [tuple.cnstr]
463 // tuple() constructors (including allocator_arg_t variants)
470 tuple()
482 explicit tuple()
492 tuple(allocator_arg_t, _Alloc const& __a)
507 explicit tuple(allocator_arg_t, _Alloc const& __a)
513 // tuple(const T&...) constructors (including allocator_arg_t variants)
522 tuple(const _Tp& ... __t)
525 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
527 typename __make_tuple_types<tuple, 0>::type(),
539 explicit tuple(const _Tp& ... __t)
542 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
544 typename __make_tuple_types<tuple, 0>::type(),
556 tuple(allocator_arg_t, const _Alloc& __a, const _Tp& ... __t)
559 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
561 typename __make_tuple_types<tuple, 0>::type(),
573 explicit tuple(allocator_arg_t, const _Alloc& __a, const _Tp& ... __t)
576 typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(),
578 typename __make_tuple_types<tuple, 0>::type(),
582 // tuple(U&& ...) constructors (including allocator_arg_t variants)
584 template <class _Up> struct _IsThisTuple<_Up> : is_same<__uncvref_t<_Up>, tuple> { };
601 tuple(_Up&&... __u)
604 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
606 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
617 explicit tuple(_Up&&... __u)
620 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
622 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
633 tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
636 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
638 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
649 explicit tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u)
652 typename __make_tuple_types<tuple, sizeof...(_Up)>::type(),
654 typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(),
658 tuple(const tuple&) = default;
659 tuple(tuple&&) = default;
664 tuple(allocator_arg_t, const _Alloc& __alloc, const tuple& __t)
671 tuple(allocator_arg_t, const _Alloc& __alloc, tuple&& __t)
675 // tuple(const tuple<U...>&) constructors (including allocator_arg_t variants)
678 _Not<is_same<tuple<_Tp...>, tuple<_Up...> > >,
684 _Not<is_convertible<const tuple<_Up>&, _Tp> >...,
685 _Not<is_constructible<_Tp, const tuple<_Up>&> >...
699 tuple(const tuple<_Up...>& __t)
712 explicit tuple(const tuple<_Up...>& __t)
725 tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
737 explicit tuple(allocator_arg_t, const _Alloc& __a, const tuple<_Up...>& __t)
741 // tuple(tuple<U...>&&) constructors (including allocator_arg_t variants)
744 _Not<is_same<tuple<_Tp...>, tuple<_Up...> > >,
750 _Not<is_convertible<tuple<_Up>, _Tp> >...,
751 _Not<is_constructible<_Tp, tuple<_Up> > >...
765 tuple(tuple<_Up...>&& __t)
778 explicit tuple(tuple<_Up...>&& __t)
791 tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
803 explicit tuple(allocator_arg_t, const _Alloc& __a, tuple<_Up...>&& __t)
807 // tuple(const pair<U1, U2>&) constructors (including allocator_arg_t variants)
831 tuple(const pair<_Up1, _Up2>& __p)
846 explicit tuple(const pair<_Up1, _Up2>& __p)
861 tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
872 explicit tuple(allocator_arg_t, const _Alloc& __a, const pair<_Up1, _Up2>& __p)
876 // tuple(pair<U1, U2>&&) constructors (including allocator_arg_t variants)
900 tuple(pair<_Up1, _Up2>&& __p)
915 explicit tuple(pair<_Up1, _Up2>&& __p)
930 tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
941 explicit tuple(allocator_arg_t, const _Alloc& __a, pair<_Up1, _Up2>&& __p)
945 // [tuple.assign]
947 tuple& operator=(_If<_And<is_copy_assignable<_Tp>...>::value, tuple, __nat> const& __tuple)
956 tuple& operator=(_If<_And<is_move_assignable<_Tp>...>::value, tuple, __nat>&& __tuple)
972 tuple& operator=(tuple<_Up...> const& __tuple)
987 tuple& operator=(tuple<_Up...>&& __tuple)
1004 tuple& operator=(pair<_Up1, _Up2> const& __pair)
1023 tuple& operator=(pair<_Up1, _Up2>&& __pair)
1042 tuple& operator=(array<_Up, _Np> const& __array)
1058 tuple& operator=(array<_Up, _Np>&& __array)
1067 // [tuple.swap]
1069 void swap(tuple& __t) _NOEXCEPT_(__all<__is_nothrow_swappable<_Tp>::value...>::value)
1074 class _LIBCPP_TEMPLATE_VIS tuple<>
1078 tuple() _NOEXCEPT = default;
1081 tuple(allocator_arg_t, const _Alloc&) _NOEXCEPT {}
1084 tuple(allocator_arg_t, const _Alloc&, const tuple&) _NOEXCEPT {}
1087 tuple(array<_Up, 0>) _NOEXCEPT {}
1090 tuple(allocator_arg_t, const _Alloc&, array<_Up, 0>) _NOEXCEPT {}
1092 void swap(tuple&) _NOEXCEPT {}
1097 tuple(_Tp...) -> tuple<_Tp...>;
1099 tuple(pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1101 tuple(allocator_arg_t, _Alloc, _Tp...) -> tuple<_Tp...>;
1103 tuple(allocator_arg_t, _Alloc, pair<_Tp1, _Tp2>) -> tuple<_Tp1, _Tp2>;
1105 tuple(allocator_arg_t, _Alloc, tuple<_Tp...>) -> tuple<_Tp...>;
1115 swap(tuple<_Tp...>& __t, tuple<_Tp...>& __u)
1123 typename tuple_element<_Ip, tuple<_Tp...> >::type&
1124 get(tuple<_Tp...>& __t) _NOEXCEPT
1126 typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1132 const typename tuple_element<_Ip, tuple<_Tp...> >::type&
1133 get(const tuple<_Tp...>& __t) _NOEXCEPT
1135 typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1141 typename tuple_element<_Ip, tuple<_Tp...> >::type&&
1142 get(tuple<_Tp...>&& __t) _NOEXCEPT
1144 typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1151 const typename tuple_element<_Ip, tuple<_Tp...> >::type&&
1152 get(const tuple<_Tp...>&& __t) _NOEXCEPT
1154 typedef _LIBCPP_NODEBUG_TYPE typename tuple_element<_Ip, tuple<_Tp...> >::type type;
1201 constexpr _T1& get(tuple<_Args...>& __tup) noexcept
1208 constexpr _T1 const& get(tuple<_Args...> const& __tup) noexcept
1215 constexpr _T1&& get(tuple<_Args...>&& __tup) noexcept
1222 constexpr _T1 const&& get(tuple<_Args...> const&& __tup) noexcept
1233 tuple<_Tp&...>
1236 return tuple<_Tp&...>(__t...);
1253 tuple<typename __unwrap_ref_decay<_Tp>::type...>
1256 return tuple<typename __unwrap_ref_decay<_Tp>::type...>(_VSTD::forward<_Tp>(__t)...);
1261 tuple<_Tp&&...>
1264 return tuple<_Tp&&...>(_VSTD::forward<_Tp>(__t)...);
1292 operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1301 operator!=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1336 operator<(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1345 operator>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1353 operator>=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1361 operator<=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
1371 struct __tuple_cat_type<tuple<_Ttypes...>, __tuple_types<_Utypes...> >
1373 typedef _LIBCPP_NODEBUG_TYPE tuple<_Ttypes..., _Utypes...> type;
1382 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0>
1384 typedef _LIBCPP_NODEBUG_TYPE typename __tuple_cat_type<tuple<_Types...>,
1390 struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0, _Tuple1, _Tuples...>
1393 tuple<_Types...>,
1405 : public __tuple_cat_return_1<tuple<>,
1414 typedef _LIBCPP_NODEBUG_TYPE tuple<> type;
1418 tuple<>
1421 return tuple<>();
1428 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0>
1431 typedef tuple<_Types..., typename __apply_cv<_Tuple0,
1436 struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>,
1439 tuple<_Types..., typename __apply_cv<_Tuple0,
1450 : public __tuple_cat_return_ref_imp<tuple<>,
1461 struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J0...> >
1465 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&>::type
1466 operator()(tuple<_Types...> __t, _Tuple0&& __t0)
1475 typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&, _Tuple1&&, _Tuples&&...>::type
1476 operator()(tuple<_Types...> __t, _Tuple0&& __t0, _Tuple1&& __t1, _Tuples&& ...__tpls)
1481 tuple<_Types...,
1500 return __tuple_cat<tuple<>, __tuple_indices<>,
1502 (tuple<>(), _VSTD::forward<_Tuple0>(__t0),
1507 struct _LIBCPP_TEMPLATE_VIS uses_allocator<tuple<_Tp...>, _Alloc>
1514 tuple<_Args1...>& __first_args, tuple<_Args2...>& __second_args,