Index: base/bind_helpers.h |
diff --git a/base/bind_helpers.h b/base/bind_helpers.h |
index c1ca3d793c13671dabc0a1e07af728a6232118d0..92194e713885d75f4cadf78a6f83780567168a5b 100644 |
--- a/base/bind_helpers.h |
+++ b/base/bind_helpers.h |
@@ -161,7 +161,11 @@ struct UnsafeBindtoRefCountedArgHelper<true, T> |
}; |
template <typename T> |
-struct UnsafeBindtoRefCountedArg |
+struct UnsafeBindtoRefCountedArg : false_type { |
+}; |
+ |
+template <typename T> |
+struct UnsafeBindtoRefCountedArg<T*> |
: UnsafeBindtoRefCountedArgHelper<is_class<T>::value, T> { |
}; |
@@ -233,43 +237,6 @@ struct MaybeRefcount<base::true_type, const T*> { |
static void Release(const T* o) { o->Release(); } |
}; |
- |
-// This is a typetraits object that's used to convert an argument type into a |
-// type suitable for storage. In particular, it strips off references, and |
-// converts arrays to pointers. |
-// |
-// This array type becomes an issue because we are passing bound parameters by |
-// const reference. In this case, we end up passing an actual array type in the |
-// initializer list which C++ does not allow. This will break passing of |
-// C-string literals. |
-template <typename T> |
-struct BindType { |
- typedef T StorageType; |
-}; |
- |
-// This should almost be impossible to trigger unless someone manually |
-// specifies type of the bind parameters. However, in case they do, |
-// this will guard against us accidentally storing a reference parameter. |
-template <typename T> |
-struct BindType<T&> { |
- typedef T StorageType; |
-}; |
- |
-// Note that for array types, we implicitly add a const in the conversion. This |
-// means that it is not possible to bind array arguments to functions that take |
-// a non-const pointer. Trying to specialize the template based on a "const |
-// T[n]" does not seem to match correctly, so we are stuck with this |
-// restriction. |
-template <typename T, size_t n> |
-struct BindType<T[n]> { |
- typedef const T* StorageType; |
-}; |
- |
-template <typename T> |
-struct BindType<T[]> { |
- typedef const T* StorageType; |
-}; |
- |
} // namespace internal |
template <typename T> |