fork download
  1. #include <iostream>
  2. #include <utility>
  3. #include <array>
  4.  
  5. class fooCaller {
  6. public:
  7. template <typename... Args>
  8. void operator() (Args&&... args) const {
  9. const auto v = {args...};
  10. for (auto x : v) std::cout << x << ' '; std::cout << '\n';
  11. }
  12. };
  13.  
  14. template <typename> struct Foo;
  15.  
  16. template <std::size_t... Is>
  17. struct Foo<std::index_sequence<Is...>> {
  18. template <typename Container, typename F> // *** Modified
  19. static void execute (const Container& v, F f) {
  20. f(v[Is]...);
  21. }
  22. };
  23.  
  24. template <std::size_t N>
  25. void fooArray (const std::array<int, N>& a) {
  26. Foo<std::make_index_sequence<N>>::execute(a, fooCaller{});
  27. }
  28.  
  29. int main() {
  30. fooArray<6>({0,1,2,3,4,5});
  31. }
  32.  
  33.  
Success #stdin #stdout 0s 3096KB
stdin
Standard input is empty
stdout
0 1 2 3 4 5