Для std::array размер в общем случае задаётся вручную
std::array<int, 2> test{ 2,3 };Начиная с C++17 можно оставить вывод размера компилятору
std::array test{ 2,3 };Но если необходимо использовать шаблоны, то можно воспользоваться шаблонной магией
template<typename T, size_t N>
int size(const std::array<T, N>& types)
{
return N;
}