Index: base/callback_internal.h |
diff --git a/base/callback_internal.h b/base/callback_internal.h |
index e4e538ff15c2d0dfe239bc5d8b17fe411c59926e..8b79023b5a7cefc8e6cb7bd22d3fbd4e23e11315 100644 |
--- a/base/callback_internal.h |
+++ b/base/callback_internal.h |
@@ -129,16 +129,7 @@ struct CallbackParamTraitsForNonMoveOnlyType; |
// http://connect.microsoft.com/VisualStudio/feedbackdetail/view/957801/compilation-error-with-variadic-templates |
// |
// This is a typetraits object that's used to take an argument type, and |
-// extract a suitable type for storing and forwarding arguments. |
-// |
-// In particular, it strips off references, and converts arrays to |
-// pointers for storage; and it avoids accidentally trying to create a |
-// "reference of a reference" if the argument is a reference type. |
-// |
-// This array type becomes an issue for storage 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. |
+// extract a suitable type for forwarding arguments. |
template <typename T> |
struct CallbackParamTraits |
: std::conditional<IsMoveOnlyType<T>::value, |
@@ -149,18 +140,6 @@ struct CallbackParamTraits |
template <typename T> |
struct CallbackParamTraitsForNonMoveOnlyType { |
using ForwardType = const T&; |
- using StorageType = T; |
-}; |
- |
-// The Storage 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. |
-// |
-// The ForwardType should only be used for unbound arguments. |
-template <typename T> |
-struct CallbackParamTraitsForNonMoveOnlyType<T&> { |
- using ForwardType = T&; |
- using StorageType = T; |
}; |
// Note that for array types, we implicitly add a const in the conversion. This |
@@ -171,14 +150,12 @@ struct CallbackParamTraitsForNonMoveOnlyType<T&> { |
template <typename T, size_t n> |
struct CallbackParamTraitsForNonMoveOnlyType<T[n]> { |
using ForwardType = const T*; |
- using StorageType = const T*; |
}; |
// See comment for CallbackParamTraits<T[n]>. |
template <typename T> |
struct CallbackParamTraitsForNonMoveOnlyType<T[]> { |
using ForwardType = const T*; |
- using StorageType = const T*; |
}; |
// Parameter traits for movable-but-not-copyable scopers. |
@@ -197,7 +174,6 @@ struct CallbackParamTraitsForNonMoveOnlyType<T[]> { |
template <typename T> |
struct CallbackParamTraitsForMoveOnlyType { |
using ForwardType = T; |
- using StorageType = T; |
}; |
// CallbackForward() is a very limited simulation of C++11's std::forward() |