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

Lines Matching refs:Tuple

54 template<typename... Values> class tuple;
56 // Basis case: zero-length tuple
57 template<> class tuple<> { };
60 class tuple<Head, Tail...> : private tuple<Tail...> {
61 typedef tuple<Tail...> inherited;
64 tuple() { }
67 // Construct tuple from separate arguments.
68 tuple(typename add_const_reference<Head>::type v,
72 // Construct tuple from another tuple.
73 template<typename... VValues> tuple(const tuple<VValues...>& other)
76 template<typename... VValues> tuple&
77 operator=(const tuple<VValues...>& other) {
104 tuple<typename make_tuple_result<Values>::type...>
106 return tuple<typename make_tuple_result<Values>::type...>(values...);
110 tuple<Values&...> tie(Values&... values) {
111 return tuple<Values&...>(values...);
115 template<typename Tuple> struct tuple_size;
117 template<typename... Values> struct tuple_size<tuple<Values...> > {
121 template<int I, typename Tuple> struct tuple_element;
124 struct tuple_element<I, tuple<Head, Tail...> > {
125 typedef typename tuple_element<I-1, tuple<Tail...> >::type type;
129 struct tuple_element<0, tuple<Head, Tail...> > {
134 template<int I, typename Tuple> class get_impl;
136 class get_impl<I, tuple<Head, Values...> > {
137 typedef typename tuple_element<I-1, tuple<Values...> >::type Element;
140 typedef get_impl<I-1, tuple<Values...> > Next;
142 static RJ get(tuple<Head, Values...>& t) { return Next::get(t.tail()); }
143 static PJ get(const tuple<Head, Values...>& t) { return Next::get(t.tail()); }
147 class get_impl<0, tuple<Head, Values...> > {
151 static RJ get(tuple<Head, Values...>& t) { return t.head(); }
152 static PJ get(const tuple<Head, Values...>& t) { return t.head(); }
156 typename tuple_element<I, tuple<Values...> >::type >::type
157 get(tuple<Values...>& t) {
158 return get_impl<I, tuple<Values...> >::get(t);
162 typename tuple_element<I, tuple<Values...> >::type >::type
163 get(const tuple<Values...>& t) {
164 return get_impl<I, tuple<Values...> >::get(t);
168 inline bool operator==(const tuple<>&, const tuple<>&) { return true; }
171 bool operator==(const tuple<T, TTail...>& t, const tuple<U, UTail...>& u) {
176 bool operator!=(const tuple<TValues...>& t, const tuple<UValues...>& u) {
180 inline bool operator<(const tuple<>&, const tuple<>&) { return false; }
183 bool operator<(const tuple<T, TTail...>& t, const tuple<U, UTail...>& u) {
188 bool operator>(const tuple<TValues...>& t, const tuple<UValues...>& u) {
193 bool operator<=(const tuple<TValues...>& t, const tuple<UValues...>& u) {
198 bool operator>=(const tuple<TValues...>& t, const tuple<UValues...>& u) {
239 tuple<BoundArgs...> bound_args;
265 template<int I, typename Tuple, typename = void>
269 struct safe_tuple_element<I, tuple<Values...>,
270 typename enable_if<(I >= 0 && I < tuple_size<tuple<Values...> >::value)>::type> {
271 typedef typename tuple_element<I, tuple<Values...> >::type type;
277 tuple<Args...> >::type
278 mu(Bound& bound_arg, const tuple<Args&...>& args) {
283 inline T& mu(reference_wrapper<T>& bound_arg, const tuple<Args&...>&) {
289 unwrap_and_forward(F& f, int_tuple<Indexes...>, const tuple<Args&...>& args) {
296 mu(Bound& bound_arg, const tuple<Args&...>& args) {
316 mu(Bound& bound_arg, const tuple<Args&...>&) {
321 typename F::result_type apply_functor(F& f, tuple<BoundArgs...>& bound_args,
323 const tuple<Args&...>& args) {