Index: base/callback_internal.h |
diff --git a/base/callback_internal.h b/base/callback_internal.h |
index 3e8ee82e4f246c5a875ba97d5ae219097e745f19..c28ac0d905c04a7b33490550bd9635e5969a0514 100644 |
--- a/base/callback_internal.h |
+++ b/base/callback_internal.h |
@@ -18,7 +18,6 @@ |
#include "base/macros.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
-#include "base/template_util.h" |
namespace base { |
namespace internal { |
@@ -103,7 +102,13 @@ class BASE_EXPORT CallbackBase { |
// confuses template deduction in VS2013 with certain types such as |
// std::unique_ptr. |
// TODO(dcheng): Revisit this when Windows switches to VS2015 by default. |
+ |
template <typename T> struct IsMoveOnlyType { |
+ // Types YesType and NoType are guaranteed such that sizeof(YesType) < |
+ // sizeof(NoType). |
+ using YesType = char; |
+ struct NoType { YesType dummy[2]; }; |
+ |
template <typename U> |
static YesType Test(const typename U::MoveOnlyTypeForCPP03*); |
@@ -111,7 +116,7 @@ template <typename T> struct IsMoveOnlyType { |
static NoType Test(...); |
static const bool value = sizeof((Test<T>(0))) == sizeof(YesType) && |
- !is_const<T>::value; |
+ !std::is_const<T>::value; |
}; |
// Specialization of IsMoveOnlyType so that std::unique_ptr is still considered |