One last thing. If in your function you are iterating through the array, put a flag in the last position, such as -1 for int arrays, so when you hit that value, you know you have reached the end of the array. The std::array and std::vector classes have a size() method that allows you to iterate to the end quite safely, otherwise you either need a placeholder / flag for the end of the array, or pass the number of elements in the array as an argument to the function.
FYI, std::array<T,size_t N> is only for C++11. For earlier versions of C++, use std::vector<T>. The std::array<T,size_t> class is presized using the second argument in the template declaration. Myself, I prefer vectors. For small collections, it is about as efficient as arrays, and the resize algorithm is quite efficient. Before the STL was invented I wrote a container class that used the same algorithm they use for std::vector<T>. You could insert a 100,000 records in practically no time.
I use std::vector<T> objects frequently for the work I am doing now for Panasonic Factory Solutions.