|
- #pragma once
-
- namespace asyncpp
- {
-
- template<typename T_impl>
- struct future_base
- {
- public:
- using impl_type = T_impl;
-
- public:
- template<typename X_future>
- static inline auto poll(X_future& self) = delete;
-
- template<typename X_future, typename X_lambda>
- static inline auto map(X_future&& self, X_lambda&& p_lambda);
-
- template<typename X_future, typename X_lambda>
- static inline auto and_then(X_future&& self, X_lambda&& p_lambda);
- };
-
- template<typename T, typename = void>
- struct future_trait;
-
- template<
- typename T_object,
- typename T_impl = future_trait<std::decay_t<T_object>>>
- struct future;
-
- /**
- * @brief Construct a future from the given value.
- */
- template<typename X_value>
- constexpr decltype(auto) as_future(X_value&& value);
-
- }
|