Adjust the way Future<Unit>'s constructor is defined
authorChristopher Dykes <cdykes@fb.com>
Mon, 20 Jun 2016 18:29:55 +0000 (11:29 -0700)
committerFacebook Github Bot 3 <facebook-github-bot-3-bot@fb.com>
Mon, 20 Jun 2016 18:38:23 +0000 (11:38 -0700)
Summary: This is needed to work around a limitation in MSVC's SFINAE support.

Reviewed By: yfeldblum

Differential Revision: D3271292

fbshipit-source-id: 88052beaa97a297c6eb3eb5047c8fed48c8155af

folly/futures/Future-inl.h
folly/futures/Future.h

index 094ccdc0ece17f43e303d908bcbceee274fc3a2e..c068df065ed9fbc28f749ba6ac8a6df3bb3046ab 100644 (file)
@@ -82,9 +82,9 @@ Future<T>::Future(T2&& val)
     : core_(new detail::Core<T>(Try<T>(std::forward<T2>(val)))) {}
 
 template <class T>
-template <typename, typename>
-Future<T>::Future()
-  : core_(new detail::Core<T>(Try<T>(T()))) {}
+template <typename T2>
+Future<T>::Future(typename std::enable_if<std::is_same<Unit, T2>::value>::type*)
+    : core_(new detail::Core<T>(Try<T>(T()))) {}
 
 template <class T>
 Future<T>::~Future() {
index c3249fdef836090ef6cb9e0e27ff9d5c0f8b842e..7563507d2bbc9b631a17a2a7688d850260f8d595 100644 (file)
@@ -71,10 +71,9 @@ class Future {
               !isFuture<typename std::decay<T2>::type>::value>::type>
   /* implicit */ Future(T2&& val);
 
-  template <class T2 = T, typename =
-            typename std::enable_if<
-              std::is_same<Unit, T2>::value>::type>
-  Future();
+  template <class T2 = T>
+  /* implicit */ Future(
+      typename std::enable_if<std::is_same<Unit, T2>::value>::type* = nullptr);
 
   ~Future();