Почему?
#include <iostream>
#include <vector>
#include <array>
void foo(int a)
{
    size_t s;
    if (a < 1)  
        s = 100;
    else
        s = a;
    int sa[s]; // ок!
    std::cout << sizeof(sa) << std::endl; // размеры разные
    //std::array<int, s> a; // ошибка!
}
int main()
{
    foo(-1);
    foo(10);
    return 0;
}







