#include <iostream>
#include <utility>
#include <tuple>


template <typename ... Args>
void f(Args... args)
{
	int dummy[] = {0, (std::cout << " " << std::forward<Args>(args), 0)...};
}

namespace detail
{
	
    template<class T> auto modifier(T&& arg, std::size_t i, std::size_t pos) {
        if (i == pos)
            return arg + 40;
        else
            return std::forward<T>(arg);
    }

	template <std::size_t... Is, typename... Args>
	void bar(std::size_t pos, std::index_sequence<Is...>, Args&&... args) {
		return f(modifier(std::forward<Args>(args), Is, pos)...);
	}

}

template<typename... Args>
void bar(std::size_t pos, Args&&... args) {
    detail::bar(pos, std::index_sequence_for<Args...>(), std::forward<Args>(args)...);
}

int main() {
	bar(2, 0, 1, 2, 3, 4, 5, 6);
	
}