namespace folly {
// forward declaration
+template <class T>
+class SemiFuture;
template <class T> class Future;
+namespace futures {
namespace detail {
+template <class T>
+class FutureBase;
struct EmptyConstruct {};
template <typename T, typename F>
class CoreCallbackState;
-}
+} // namespace detail
+} // namespace futures
template <class T>
class Promise {
private:
typedef typename Future<T>::corePtr corePtr;
- template <class> friend class Future;
+ template <class>
+ friend class futures::detail::FutureBase;
+ template <class>
+ friend class SemiFuture;
+ template <class>
+ friend class Future;
template <class, class>
- friend class detail::CoreCallbackState;
+ friend class futures::detail::CoreCallbackState;
// Whether the Future has been retrieved (a one-time operation).
bool retrieved_;
// shared core state object
corePtr core_;
- explicit Promise(detail::EmptyConstruct) noexcept;
+ explicit Promise(futures::detail::EmptyConstruct) noexcept;
void throwIfFulfilled();
void throwIfRetrieved();
void detach();
};
-}
+} // namespace folly
#include <folly/futures/Future.h>
#include <folly/futures/Promise-inl.h>