Porque la matriz se desintegra al puntero al pasar como parámetro a la función (u operador). Entonces eliminar p [] sería simplemente equivalente a eliminar p.
[editar] Podemos pensar en eliminar como operador de plantilla especial. El operador debería ser capaz de distinguir entre p y p [] para seleccionar la "especialización" correcta (eliminación no de matriz o matriz). Sin embargo, las reglas de deducción de argumento de la plantilla hacen que esta elección sea imposible (debido a la disminución de la matriz, no podemos distinguir entre p [] y p al deducir el argumento).
Así que no podemos usar el operador con el nombre eliminar tanto casees y la necesidad de introducir otro operador delete [] con el nombre de diversa (sufijo [] puede ser tratada como parte del nombre del operador) para el caso de la matriz.
[editar 2] Nota. delete p [] no es válido sintax en absoluto según el estándar actual. El razonamiento anterior solo muestra problemas que podrían surgir si intentáramos interpretar eliminar p [] usando conceptos de C++ existentes.
¿Por qué declinar/votar para cerrar? ¿Qué puedo hacer para mejorar la pregunta? – Michael0x2a
@Deflect: Eso era mío, generalmente '¿por qué se eligió este lenguaje?' las preguntas simplemente no son constructivas porque no hay una respuesta objetiva y razonable. Sin embargo, en este caso hay algunas razones decentes, por lo que puede haber juzgado demasiado pronto (me quité mi voto grave con bastante rapidez). – KillianDS
@KillianDS: Bien, eso tiene sentido. ¡Gracias por responder! [y asegurándome que no estoy totalmente fuera de la base :)] – Michael0x2a