#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);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHR1cGxlPgoKCnRlbXBsYXRlIDx0eXBlbmFtZSAuLi4gQXJncz4Kdm9pZCBmKEFyZ3MuLi4gYXJncykKewoJaW50IGR1bW15W10gPSB7MCwgKHN0ZDo6Y291dCA8PCAiICIgPDwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLCAwKS4uLn07Cn0KCm5hbWVzcGFjZSBkZXRhaWwKewoJCiAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBhdXRvIG1vZGlmaWVyKFQmJiBhcmcsIHN0ZDo6c2l6ZV90IGksIHN0ZDo6c2l6ZV90IHBvcykgewogICAgICAgIGlmIChpID09IHBvcykKICAgICAgICAgICAgcmV0dXJuIGFyZyArIDQwOwogICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxUPihhcmcpOwogICAgfQoKCXRlbXBsYXRlIDxzdGQ6OnNpemVfdC4uLiBJcywgdHlwZW5hbWUuLi4gQXJncz4KCXZvaWQgYmFyKHN0ZDo6c2l6ZV90IHBvcywgc3RkOjppbmRleF9zZXF1ZW5jZTxJcy4uLj4sIEFyZ3MmJi4uLiBhcmdzKSB7CgkJcmV0dXJuIGYobW9kaWZpZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLCBJcywgcG9zKS4uLik7Cgl9Cgp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgp2b2lkIGJhcihzdGQ6OnNpemVfdCBwb3MsIEFyZ3MmJi4uLiBhcmdzKSB7CiAgICBkZXRhaWw6OmJhcihwb3MsIHN0ZDo6aW5kZXhfc2VxdWVuY2VfZm9yPEFyZ3MuLi4+KCksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cn0KCmludCBtYWluKCkgewoJYmFyKDIsIDAsIDEsIDIsIDMsIDQsIDUsIDYpOwoJCn0=