|
- #pragma once
-
- #include "map.h"
-
- namespace asyncpp {
- namespace __future {
-
- /* map_impl */
-
- template<
- typename T_future,
- typename T_lambda>
- template<
- typename X_future,
- typename X_lambda>
- map_impl<T_future, T_lambda>
- ::map_impl(
- X_future&& p_future,
- X_lambda&& p_lambda)
- : future(std::forward<X_future>(p_future))
- , lambda(std::forward<X_lambda>(p_lambda))
- { }
-
- } }
-
- namespace asyncpp
- {
-
- /* future_trait for map_impl */
-
- template<
- typename T_future,
- typename T_lambda>
- template<
- typename X_future>
- auto future_trait<__future::map_impl<T_future, T_lambda>, void>
- ::poll(X_future& self)
- {
- auto r = self->future.poll();
- return r
- ? result_type::ready(r.call(self->lambda))
- : result_type::not_ready();
- }
-
- }
|