fork download
  1. #include <iostream>
  2. #include <utility>
  3. #include <tuple>
  4.  
  5.  
  6. template <typename ... Args>
  7. void f(Args... args)
  8. {
  9. int dummy[] = {0, (std::cout << " " << std::forward<Args>(args), 0)...};
  10. }
  11.  
  12. namespace detail
  13. {
  14.  
  15. template<class T> auto modifier(T&& arg, std::size_t i, std::size_t pos) {
  16. if (i == pos)
  17. return arg + 40;
  18. else
  19. return std::forward<T>(arg);
  20. }
  21.  
  22. template <std::size_t... Is, typename... Args>
  23. void bar(std::size_t pos, std::index_sequence<Is...>, Args&&... args) {
  24. return f(modifier(std::forward<Args>(args), Is, pos)...);
  25. }
  26.  
  27. }
  28.  
  29. template<typename... Args>
  30. void bar(std::size_t pos, Args&&... args) {
  31. detail::bar(pos, std::index_sequence_for<Args...>(), std::forward<Args>(args)...);
  32. }
  33.  
  34. int main() {
  35. bar(2, 0, 1, 2, 3, 4, 5, 6);
  36.  
  37. }
Success #stdin #stdout 0s 3140KB
stdin
Standard input is empty
stdout
 0 1 42 3 4 5 6