#include <iostream>
#include <functional>
#include <array>

template <class T, size_t N>
void foreach(std::array<T, N> &arr, std::function<void(T&)> fun)
{
	for(auto &item: arr)
	{
		fun(item);
	}
}

int main()
{
    std::array<int, 10> a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int y = 2;
	std::function<void(int&)> f = [=](int &x) { x = x * y; };
    foreach(a, f);
    for(const auto &item: a)
    {
        std::cout << item << " ";
    }
    std::cout << std::endl;
}
