Index: base/bind.h |
diff --git a/base/bind.h b/base/bind.h |
index 94da5ac56a488f0fbd5b880f54705957591ac03b..644135f0775596f874baf737025b49fe03f32289 100644 |
--- a/base/bind.h |
+++ b/base/bind.h |
@@ -71,9 +71,9 @@ base::Callback< |
typename internal::FunctorTraits<Functor>::RunnableType, |
typename internal::FunctorTraits<Functor>::RunType, |
internal::TypeList< |
- typename internal::CallbackParamTraits<Args>::StorageType...>> |
+ typename std::decay<Args>::type...>> |
::UnboundRunType> |
-Bind(Functor functor, const Args&... args) { |
+Bind(Functor functor, Args&&... args) { |
// Typedefs for how to store and run the functor. |
typedef typename internal::FunctorTraits<Functor>::RunnableType RunnableType; |
typedef typename internal::FunctorTraits<Functor>::RunType RunType; |
@@ -105,12 +105,11 @@ Bind(Functor functor, const Args&... args) { |
typedef internal::BindState< |
RunnableType, RunType, |
- internal::TypeList< |
- typename internal::CallbackParamTraits<Args>::StorageType...>> |
+ internal::TypeList<typename std::decay<Args>::type...>> |
BindState; |
- return Callback<typename BindState::UnboundRunType>( |
- new BindState(internal::MakeRunnable(functor), args...)); |
+ return Callback<typename BindState::UnboundRunType>(new BindState( |
+ internal::MakeRunnable(functor), std::forward<Args>(args)...)); |
} |
} // namespace base |