| Index: base/tuple.h
|
| diff --git a/base/tuple.h b/base/tuple.h
|
| index df69bf01169cf3784edb5605de2ba021795e3c7c..0f7ec0735e94c027f97faac0c56e26274a836c72 100644
|
| --- a/base/tuple.h
|
| +++ b/base/tuple.h
|
| @@ -110,43 +110,6 @@ struct MakeIndexSequenceImpl<N, Ns...>
|
| template <size_t N>
|
| using MakeIndexSequence = typename MakeIndexSequenceImpl<N>::Type;
|
|
|
| -// Tuple -----------------------------------------------------------------------
|
| -//
|
| -// This set of classes is useful for bundling 0 or more heterogeneous data types
|
| -// into a single variable. The advantage of this is that it greatly simplifies
|
| -// function objects that need to take an arbitrary number of parameters; see
|
| -// RunnableMethod and IPC::MessageWithTuple.
|
| -//
|
| -// Tuple<> is supplied to act as a 'void' type. It can be used, for example,
|
| -// when dispatching to a function that accepts no arguments (see the
|
| -// Dispatchers below).
|
| -// Tuple<A> is rarely useful. One such use is when A is non-const ref that you
|
| -// want filled by the dispatchee, and the tuple is merely a container for that
|
| -// output (a "tier"). See MakeRefTuple and its usages.
|
| -
|
| -template <typename... Ts>
|
| -using Tuple = std::tuple<Ts...>;
|
| -
|
| -using std::get;
|
| -
|
| -// Tuple creators -------------------------------------------------------------
|
| -//
|
| -// Helper functions for constructing tuples while inferring the template
|
| -// argument types.
|
| -
|
| -template <typename... Ts>
|
| -inline Tuple<Ts...> MakeTuple(const Ts&... arg) {
|
| - return Tuple<Ts...>(arg...);
|
| -}
|
| -
|
| -// The following set of helpers make what Boost refers to as "Tiers" - a tuple
|
| -// of references.
|
| -
|
| -template <typename... Ts>
|
| -inline Tuple<Ts&...> MakeRefTuple(Ts&... arg) {
|
| - return Tuple<Ts&...>(arg...);
|
| -}
|
| -
|
| // Dispatchers ----------------------------------------------------------------
|
| //
|
| // Helper functions that call the given method on an object, with the unpacked
|
| @@ -161,15 +124,15 @@ inline Tuple<Ts&...> MakeRefTuple(Ts&... arg) {
|
| template <typename ObjT, typename Method, typename... Ts, size_t... Ns>
|
| inline void DispatchToMethodImpl(const ObjT& obj,
|
| Method method,
|
| - const Tuple<Ts...>& arg,
|
| + const std::tuple<Ts...>& arg,
|
| IndexSequence<Ns...>) {
|
| - (obj->*method)(internal::Unwrap(get<Ns>(arg))...);
|
| + (obj->*method)(internal::Unwrap(std::get<Ns>(arg))...);
|
| }
|
|
|
| template <typename ObjT, typename Method, typename... Ts>
|
| inline void DispatchToMethod(const ObjT& obj,
|
| Method method,
|
| - const Tuple<Ts...>& arg) {
|
| + const std::tuple<Ts...>& arg) {
|
| DispatchToMethodImpl(obj, method, arg, MakeIndexSequence<sizeof...(Ts)>());
|
| }
|
|
|
| @@ -177,13 +140,14 @@ inline void DispatchToMethod(const ObjT& obj,
|
|
|
| template <typename Function, typename... Ts, size_t... Ns>
|
| inline void DispatchToFunctionImpl(Function function,
|
| - const Tuple<Ts...>& arg,
|
| + const std::tuple<Ts...>& arg,
|
| IndexSequence<Ns...>) {
|
| - (*function)(internal::Unwrap(get<Ns>(arg))...);
|
| + (*function)(internal::Unwrap(std::get<Ns>(arg))...);
|
| }
|
|
|
| template <typename Function, typename... Ts>
|
| -inline void DispatchToFunction(Function function, const Tuple<Ts...>& arg) {
|
| +inline void DispatchToFunction(Function function,
|
| + const std::tuple<Ts...>& arg) {
|
| DispatchToFunctionImpl(function, arg, MakeIndexSequence<sizeof...(Ts)>());
|
| }
|
|
|
| @@ -197,18 +161,19 @@ template <typename ObjT,
|
| size_t... OutNs>
|
| inline void DispatchToMethodImpl(const ObjT& obj,
|
| Method method,
|
| - const Tuple<InTs...>& in,
|
| - Tuple<OutTs...>* out,
|
| + const std::tuple<InTs...>& in,
|
| + std::tuple<OutTs...>* out,
|
| IndexSequence<InNs...>,
|
| IndexSequence<OutNs...>) {
|
| - (obj->*method)(internal::Unwrap(get<InNs>(in))..., &get<OutNs>(*out)...);
|
| + (obj->*method)(internal::Unwrap(std::get<InNs>(in))...,
|
| + &std::get<OutNs>(*out)...);
|
| }
|
|
|
| template <typename ObjT, typename Method, typename... InTs, typename... OutTs>
|
| inline void DispatchToMethod(const ObjT& obj,
|
| Method method,
|
| - const Tuple<InTs...>& in,
|
| - Tuple<OutTs...>* out) {
|
| + const std::tuple<InTs...>& in,
|
| + std::tuple<OutTs...>* out) {
|
| DispatchToMethodImpl(obj, method, in, out,
|
| MakeIndexSequence<sizeof...(InTs)>(),
|
| MakeIndexSequence<sizeof...(OutTs)>());
|
|
|