В зависимости от того, какой «массив» вы хотите использовать, я думаю, создание будет простым, здесь с помощью std :: vector. Вы можете использовать любой контейнер, который вам нравится. Доступ здесь осуществляется с помощью [], но также может быть выполнен методом at()
typedef Foo<std::function<void(void)>> FooTypeDef;
int main() {
auto test = [](){std::cout << "hello\n";};
FooTypeDef foo(5,10, test);
foo._func();
//array version
//......................
std::vector<FooTypeDef> array;
array.push_back(foo);
array.push_back(foo);
array[0]._func();
array[1]._func();
}
И, возможно, используется typedef;)