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