5.3.4 en el estándar de C++:
6 Cada expresión-constante en un directa-new-declarador puede ser una expresión constante integral (5.19) y evaluar a un valor estrictamente positivo. La expresión en un directa-new-declarador tendrá tipo integral o de enumeración (3.9.1) con un valor no negativo ...
7 Cuando el valor de la expresión en un directa -new-declarator es cero, se llama a la función de asignación para asignar una matriz sin elementos.
Por lo tanto, su código asigna una matriz que se comporta en todos los aspectos como cualquier otra matriz de T (se puede eliminar con delete [], pasar como un parámetro, probablemente otras cosas). Sin embargo, no tiene índices accesibles (es decir, leer o escribir ptr [0] da como resultado un comportamiento indefinido).
En este contexto, la diferencia entre la expresión constante y la expresión no es si la expresión real es constante de tiempo de compilación (obviamente 0), sino si especifica la "última" dimensión de una matriz multidimensional.La sintaxis se define en 5.3.4: 1.
C++ nuevo está bien definido. – AProgrammer