#include <stdio.h>
template <typename T, void(*F)(T&)>
void myforeach(T *p, int N)
{
for(int i = 0; i < N; i++)
{
F(p[i]);
}
}
template <int Y>
void f(int &x)
{
x = x * Y;
}
int main()
{
int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
myforeach<int, f<2>>(a, 10);
for(int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdm9pZCgqRikoVCYpPgp2b2lkIG15Zm9yZWFjaChUICpwLCBpbnQgTikKewogICAgZm9yKGludCBpID0gMDsgaSA8IE47IGkrKykKICAgIHsKICAgICAgICBGKHBbaV0pOwogICAgfQp9Cgp0ZW1wbGF0ZSA8aW50IFk+CnZvaWQgZihpbnQgJngpCnsKICAgIHggPSB4ICogWTsKfQoKaW50IG1haW4oKQp7CiAgICBpbnQgYVsxMF0gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfTsKICAgIG15Zm9yZWFjaDxpbnQsIGY8Mj4+KGEsIDEwKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQogICAgewogICAgICAgIHByaW50ZigiJWQgIiwgYVtpXSk7CiAgICB9CiAgICBwcmludGYoIlxuIik7CiAgICByZXR1cm4gMDsKfQo=