fork(3) download
  1. #include <iostream>
  2. #include <string>
  3. #include <tuple>
  4. #include <utility>
  5.  
  6. using namespace std;
  7.  
  8. template <typename Tuple, typename Func, size_t... index>
  9. void tuple_each_internal(Tuple const & tuple, Func func, index_sequence<index...>)
  10. {
  11. auto res = {
  12. (func.template operator()<index>(get<index>(tuple)),
  13. nullptr)...
  14. };
  15. }
  16.  
  17. template <typename Tuple, typename Func, typename Indices = make_index_sequence<tuple_size<Tuple>::value>>
  18. void tuple_each(Tuple const & tuple, Func func)
  19. {
  20. tuple_each_internal(tuple, func, Indices());
  21. }
  22.  
  23. struct demo_functor_each {
  24.  
  25. /* Case #1: "Each" callback */
  26. //template <typename T>
  27. //void operator ()(T&& t) { ; }
  28.  
  29. /* Case #2: "Each with index as run-time parameter" callback */
  30. //template <typename T>
  31. //void operator ()(const size_t index, T&& t) { ; }
  32.  
  33. /* Case #4: "Each with index as compile-time parameter" callback */
  34. template <size_t index, typename T>
  35. void operator ()(T&& ) {}
  36.  
  37. };
  38.  
  39. void Example_Usage()
  40. {
  41.  
  42. }
  43.  
  44.  
  45. int main() {
  46. tuple<int, bool, string> t;
  47. tuple_each(t, demo_functor_each());
  48. }
Success #stdin #stdout 0s 3136KB
stdin
Standard input is empty
stdout
Standard output is empty