fork download
  1. #include <iostream>
  2. #include <tuple>
  3. #include <utility>
  4.  
  5. namespace detail {
  6. template <typename F, typename TUPLE, std::size_t ... Is>
  7. void run_for_each(F&& f, TUPLE&& t, std::index_sequence<Is...>)
  8. {
  9. const int dummy[] = {0, (f(std::get<Is>(std::forward<TUPLE>(t))), void(), 0)...};
  10. static_cast<void>(dummy); // Avoid warning for unused variable
  11. }
  12. }
  13.  
  14. template <typename F, typename TUPLE>
  15. void run_for_each(F&& f, TUPLE&& t)
  16. {
  17. detail::run_for_each(std::forward<F>(f),
  18. std::forward<TUPLE>(t),
  19. std::make_index_sequence<std::tuple_size<std::decay_t<TUPLE>>::value>());
  20. }
  21.  
  22. int main() {
  23. auto t = std::make_tuple(std::less<int>{}, std::greater<int>{});
  24.  
  25. run_for_each([](auto&&f) {std::cout << f(0, 1) << " ";}, t);
  26. std::cout << std::endl;
  27. }
  28.  
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
1 0