#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
template<typename Type, typename... Args>
void apply(std::vector<Type> &v, void(*algo)(Type*, Type*, Args...), Args... args)
{
algo(&*v.begin(), &*v.end(), args...);
}
int main()
{
std::vector<int> v(10, 50);
apply<int, int>(v, std::iota, 3);
for (unsigned int i = 0; i < v.size(); ++i) {
std::cout<<v[i]<<std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bnVtZXJpYz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnRlbXBsYXRlPHR5cGVuYW1lIFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+IAp2b2lkIGFwcGx5KHN0ZDo6dmVjdG9yPFR5cGU+ICZ2LCB2b2lkKCphbGdvKShUeXBlKiwgVHlwZSosIEFyZ3MuLi4pLCBBcmdzLi4uIGFyZ3MpCnsKICAgIGFsZ28oJip2LmJlZ2luKCksICYqdi5lbmQoKSwgYXJncy4uLik7Cn0KCmludCBtYWluKCkKewogICAgc3RkOjp2ZWN0b3I8aW50PiB2KDEwLCA1MCk7CiAgICBhcHBseTxpbnQsIGludD4odiwgc3RkOjppb3RhLCAzKTsKICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdi5zaXplKCk7ICsraSkgewogICAgICAgc3RkOjpjb3V0PDx2W2ldPDxzdGQ6OmVuZGw7CiAgICB9Cn0=