Chromium Code Reviews| Index: base/bind_helpers.h |
| diff --git a/base/bind_helpers.h b/base/bind_helpers.h |
| index 590d788b96e0a650e22065884d4c8dc41d63531e..98adff79bda8bc22891d084e1bf6775f9c0a5d8e 100644 |
| --- a/base/bind_helpers.h |
| +++ b/base/bind_helpers.h |
| @@ -458,15 +458,15 @@ T Unwrap(PassedWrapper<T>& o) { |
| // |
| // The first argument should be the type of the object that will be received by |
| // the method. |
| -template <bool IsMethod, typename... Args> |
| -struct IsWeakMethod : public std::false_type {}; |
| +template <bool IsMethod, typename ArgsTuple> |
| +struct IsWeakMethod : std::false_type {}; |
| template <typename T, typename... Args> |
| -struct IsWeakMethod<true, WeakPtr<T>, Args...> : public std::true_type {}; |
| +struct IsWeakMethod<true, std::tuple<WeakPtr<T>, Args...>> : std::true_type {}; |
| template <typename T, typename... Args> |
| -struct IsWeakMethod<true, ConstRefWrapper<WeakPtr<T>>, Args...> |
| - : public std::true_type {}; |
| +struct IsWeakMethod<true, std::tuple<ConstRefWrapper<WeakPtr<T>>, Args...>> |
| + : std::true_type {}; |
| // Packs a list of types to hold them in a single type. |
| @@ -550,19 +550,25 @@ struct MakeFunctionTypeImpl<R, TypeList<Args...>> { |
| template <typename R, typename ArgList> |
| using MakeFunctionType = typename MakeFunctionTypeImpl<R, ArgList>::Type; |
| -// Used for ExtractArgs. |
| +// Used for ExtractArgs and ExtractReturnType. |
| template <typename Signature> |
| struct ExtractArgsImpl; |
| template <typename R, typename... Args> |
| struct ExtractArgsImpl<R(Args...)> { |
| - using Type = TypeList<Args...>; |
| + using ReturnType = R; |
| + using ArgsList = TypeList<Args...>; |
| }; |
| // A type-level function that extracts function arguments into a TypeList. |
| // E.g. ExtractArgs<R(A, B, C)> is evaluated to TypeList<A, B, C>. |
| template <typename Signature> |
| -using ExtractArgs = typename ExtractArgsImpl<Signature>::Type; |
| +using ExtractArgs = typename ExtractArgsImpl<Signature>::ArgsList; |
| + |
| +// A type-level function that extracts return type of a function. |
|
Nico
2016/06/02 17:27:44
grammar nit: "that extracts the return type of a f
tzik
2016/06/03 13:29:52
Thanks! Done.
|
| +// E.g. ExtractReturnType<R(A, B, C)> is evaluated to R. |
| +template <typename Signature> |
| +using ExtractReturnType = typename ExtractArgsImpl<Signature>::ReturnType; |
| } // namespace internal |