|
- #pragma once
-
- #include <memory>
-
- namespace asyncpp {
- namespace __future {
-
- template<
- typename T_future,
- typename T_lambda>
- struct and_then_impl
- {
- public:
- using lambda_type = T_lambda;
- using outer_future_type = T_future;
- using outer_value_type = typename outer_future_type::value_type;
- using inner_future_type = decltype(as_future(std::declval<lambda_type>()(std::declval<outer_value_type>())));
- using inner_future_type_ptr = std::unique_ptr<inner_future_type>;
-
- public:
- lambda_type lambda;
- outer_future_type outer;
- inner_future_type_ptr inner;
-
- public:
- /**
- * @brief Constructor.
- */
- template<
- typename X_future,
- typename X_lambda>
- inline and_then_impl(
- X_future&& p_outer,
- X_lambda&& p_lambda);
- };
-
- } }
|