Future::unit()
[folly.git] / folly / futures / Future-inl.h
index 59498af986ef9768a745b502e7968af11e32a555..446a88f34baa6c139b0519d53113ee7bfdfb01fd 100644 (file)
@@ -49,14 +49,10 @@ Future<T>::Future(T2&& val)
   : core_(new detail::Core<T>(Try<T>(std::forward<T2>(val)))) {}
 
 template <class T>
   : core_(new detail::Core<T>(Try<T>(std::forward<T2>(val)))) {}
 
 template <class T>
-template <class T2,
-          typename std::enable_if<
-            folly::is_void_or_unit<T2>::value,
-            int>::type>
+template <typename, typename>
 Future<T>::Future()
   : core_(new detail::Core<T>(Try<T>())) {}
 
 Future<T>::Future()
   : core_(new detail::Core<T>(Try<T>())) {}
 
-
 template <class T>
 Future<T>::~Future() {
   detach();
 template <class T>
 Future<T>::~Future() {
   detach();
@@ -452,6 +448,16 @@ bool Future<T>::isReady() const {
   return core_->ready();
 }
 
   return core_->ready();
 }
 
+template <class T>
+bool Future<T>::hasValue() {
+  return getTry().hasValue();
+}
+
+template <class T>
+bool Future<T>::hasException() {
+  return getTry().hasException();
+}
+
 template <class T>
 void Future<T>::raise(exception_wrapper exception) {
   core_->raise(std::move(exception));
 template <class T>
 void Future<T>::raise(exception_wrapper exception) {
   core_->raise(std::move(exception));