summaryrefslogtreecommitdiffstats
path: root/base/template_util.h
diff options
context:
space:
mode:
authoraa <aa@chromium.org>2014-09-25 16:06:29 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-25 23:07:14 +0000
commit489d67130b22457a2c9ee7b6671cc105bf5204c3 (patch)
treeb84078d10008d0df2a0fa6515d9d4b570ce4ff08 /base/template_util.h
parentdfa74e6b9bf23e0c4635982d9754e7f3a2b8f250 (diff)
downloadchromium_src-489d67130b22457a2c9ee7b6671cc105bf5204c3.zip
chromium_src-489d67130b22457a2c9ee7b6671cc105bf5204c3.tar.gz
chromium_src-489d67130b22457a2c9ee7b6671cc105bf5204c3.tar.bz2
Update base::is_member_function_pointer to use variadic templates.
BUG= Review URL: https://codereview.chromium.org/598223003 Cr-Commit-Position: refs/heads/master@{#296817}
Diffstat (limited to 'base/template_util.h')
-rw-r--r--base/template_util.h34
1 files changed, 6 insertions, 28 deletions
diff --git a/base/template_util.h b/base/template_util.h
index f4bf746..83fa322 100644
--- a/base/template_util.h
+++ b/base/template_util.h
@@ -28,37 +28,15 @@ typedef integral_constant<bool, false> false_type;
template <class T> struct is_pointer : false_type {};
template <class T> struct is_pointer<T*> : true_type {};
-// Member function pointer detection up to four params. Add more as needed
-// below. This is built-in to C++ 11, and we can remove this when we switch.
+// Member function pointer detection. This is built-in to C++ 11's stdlib, and
+// we can remove this when we switch to it.
template<typename T>
struct is_member_function_pointer : false_type {};
-template <typename R, typename Z>
-struct is_member_function_pointer<R(Z::*)()> : true_type {};
-template <typename R, typename Z>
-struct is_member_function_pointer<R(Z::*)() const> : true_type {};
-
-template <typename R, typename Z, typename A>
-struct is_member_function_pointer<R(Z::*)(A)> : true_type {};
-template <typename R, typename Z, typename A>
-struct is_member_function_pointer<R(Z::*)(A) const> : true_type {};
-
-template <typename R, typename Z, typename A, typename B>
-struct is_member_function_pointer<R(Z::*)(A, B)> : true_type {};
-template <typename R, typename Z, typename A, typename B>
-struct is_member_function_pointer<R(Z::*)(A, B) const> : true_type {};
-
-template <typename R, typename Z, typename A, typename B, typename C>
-struct is_member_function_pointer<R(Z::*)(A, B, C)> : true_type {};
-template <typename R, typename Z, typename A, typename B, typename C>
-struct is_member_function_pointer<R(Z::*)(A, B, C) const> : true_type {};
-
-template <typename R, typename Z, typename A, typename B, typename C,
- typename D>
-struct is_member_function_pointer<R(Z::*)(A, B, C, D)> : true_type {};
-template <typename R, typename Z, typename A, typename B, typename C,
- typename D>
-struct is_member_function_pointer<R(Z::*)(A, B, C, D) const> : true_type {};
+template <typename R, typename Z, typename... A>
+struct is_member_function_pointer<R(Z::*)(A...)> : true_type {};
+template <typename R, typename Z, typename... A>
+struct is_member_function_pointer<R(Z::*)(A...) const> : true_type {};
template <class T, class U> struct is_same : public false_type {};