I was reading the documentation for the array object in C++ here: https://en.cppreference.com/w/cpp/container/array and I saw that the template header was
template<
class T,
std::size_t N
> struct array;
Why is N passed as a non-type parameter rather than the struct having a constructor that takes a size as a variable?
What is the purpose of non-type parameters when the whole point of templates is to be used for generic types?