Why is it possible to declare a C++ Array (on stack) with a size, that isn't const or constexpr?

Almost all sources on the internet say that an array needs to be declared with a value, that is known at compile time like constexpr variables. But this code works fine for me:

int main(){
  int a;
  std::cin >> a;
  int arr[a];
  //...
}

normally you'd exspect an compiler error, would't you? So I'm confused why this works (compiled with "g++ -m32 -g -std=c++20 main.cpp -o main" on linux)