#pragma once #include 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()(std::declval()))); using inner_future_type_ptr = std::unique_ptr; 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); }; } }