Home | History | Annotate | Download | only in temp.variadic

Lines Matching refs:tuple

53 template<typename... Values> class tuple;
55 // Basis case: zero-length tuple
56 template<> class tuple<> { };
59 class tuple<Head, Tail...> : private tuple<Tail...> {
60 typedef tuple<Tail...> inherited;
63 tuple() { }
66 // Construct tuple from separate arguments.
67 tuple(typename add_const_reference<Head>::type v,
71 // Construct tuple from another tuple.
72 template<typename... VValues> tuple(const tuple<VValues...>& other)
75 template<typename... VValues> tuple&
76 operator=(const tuple<VValues...>& other) {
103 tuple<typename make_tuple_result<Values>::type...>
105 return tuple<typename make_tuple_result<Values>::type...>(values...);
109 tuple<Values&...> tie(Values&... values) {
110 return tuple<Values&...>(values...);
114 template<typename Tuple> struct tuple_size;
116 template<typename... Values> struct tuple_size<tuple<Values...> > {
120 template<int I, typename Tuple> struct tuple_element;
123 struct tuple_element<I, tuple<Head, Tail...> > {
124 typedef typename tuple_element<I-1, tuple<Tail...> >::type type;
128 struct tuple_element<0, tuple<Head, Tail...> > {
133 template<int I, typename Tuple> class get_impl;
135 class get_impl<I, tuple<Head, Values...> > {
136 typedef typename tuple_element<I-1, tuple<Values...> >::type Element;
139 typedef get_impl<I-1, tuple<Values...> > Next;
141 static RJ get(tuple<Head, Values...>& t) { return Next::get(t.tail()); }
142 static PJ get(const tuple<Head, Values...>& t) { return Next::get(t.tail()); }
146 class get_impl<0, tuple<Head, Values...> > {
150 static RJ get(tuple<Head, Values...>& t) { return t.head(); }
151 static PJ get(const tuple<Head, Values...>& t) { return t.head(); }
155 typename tuple_element<I, tuple<Values...> >::type >::type
156 get(tuple<Values...>& t) {
157 return get_impl<I, tuple<Values...> >::get(t);
161 typename tuple_element<I, tuple<Values...> >::type >::type
162 get(const tuple<Values...>& t) {
163 return get_impl<I, tuple<Values...> >::get(t);
167 inline bool operator==(const tuple<>&, const tuple<>&) { return true; }
170 bool operator==(const tuple<T, TTail...>& t, const tuple<U, UTail...>& u) {
175 bool operator!=(const tuple<TValues...>& t, const tuple<UValues...>& u) {
179 inline bool operator<(const tuple<>&, const tuple<>&) { return false; }
182 bool operator<(const tuple<T, TTail...>& t, const tuple<U, UTail...>& u) {
187 bool operator>(const tuple<TValues...>& t, const tuple<UValues...>& u) {
192 bool operator<=(const tuple<TValues...>& t, const tuple<UValues...>& u) {
197 bool operator>=(const tuple<TValues...>& t, const tuple<UValues...>& u) {
238 tuple<BoundArgs...> bound_args;
264 template<int I, typename Tuple, typename = void>
268 struct safe_tuple_element<I, tuple<Values...>,
269 typename enable_if<(I >= 0 && I < tuple_size<tuple<Values...> >::value)>::type> {
270 typedef typename tuple_element<I, tuple<Values...> >::type type;
276 tuple<Args...> >::type
277 mu(Bound& bound_arg, const tuple<Args&...>& args) {
282 inline T& mu(reference_wrapper<T>& bound_arg, const tuple<Args&...>&) {
288 unwrap_and_forward(F& f, int_tuple<Indexes...>, const tuple<Args&...>& args) {
295 mu(Bound& bound_arg, const tuple<Args&...>& args) {
315 mu(Bound& bound_arg, const tuple<Args&...>&) {
320 typename F::result_type apply_functor(F& f, tuple<BoundArgs...>& bound_args,
322 const tuple<Args&...>& args) {