: 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() {
!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();