Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

46 linhas
900 B

  1. #pragma once
  2. #include "map.h"
  3. namespace asyncpp {
  4. namespace __future {
  5. /* map_impl */
  6. template<
  7. typename T_future,
  8. typename T_lambda>
  9. template<
  10. typename X_future,
  11. typename X_lambda>
  12. map_impl<T_future, T_lambda>
  13. ::map_impl(
  14. X_future&& p_future,
  15. X_lambda&& p_lambda)
  16. : future(std::forward<X_future>(p_future))
  17. , lambda(std::forward<X_lambda>(p_lambda))
  18. { }
  19. } }
  20. namespace asyncpp
  21. {
  22. /* future_trait for map_impl */
  23. template<
  24. typename T_future,
  25. typename T_lambda>
  26. template<
  27. typename X_future>
  28. auto future_trait<__future::map_impl<T_future, T_lambda>, void>
  29. ::poll(X_future& self)
  30. {
  31. auto r = self->future.poll();
  32. return r
  33. ? result_type::ready(r.call(self->lambda))
  34. : result_type::not_ready();
  35. }
  36. }