#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;
}
