¿Se permite el tamaño de matriz en tiempo de ejecución sin asignación dinámica?

He estado usando C ++ durante algunos años, y hoy vi un código, pero ¿cómo puede ser perfectamente legal?

int main(int argc, char **argv)
{
    size_t size;
    cin >> size;
    int array[size];
    for(size_t i = 0; i < size; i++)
    {
        array[i] = i;
        cout << i << endl;
    }

    return 0;
}

Compilado bajo GCC.

¿Cómo se puede determinar el tamaño en tiempo de ejecución sinnew omalloc?

Solo para verificar, busqué en Google algunos y todos los códigos similares a los míos dicen que dan un error de tamaño de almacenamiento.

Even Deitel's C ++ Cómo programar p. 261 estados bajo Error de programación común 4.5:

olo se pueden usar constantes para declarar el tamaño de los arreglos automáticos y estáticos.

Iluminame.

Respuestas a la pregunta(7)

Su respuesta a la pregunta