Poiché l'array decade per puntare quando passa come parametro alla funzione (o all'operatore). Quindi eliminare p [] sarebbe semplicemente equivalente a eliminare p.
[modifica] Possiamo pensare di eliminazione come dell'operatore modello speciale. L'operatore dovrebbe essere in grado di distinguere tra p e p [] per scegliere la "specializzazione" giusta (eliminazione di array o array). Tuttavia, le regole di deduzione degli argomenti del modello rendono impossibile questa scelta (a causa del decadimento dell'array non possiamo distinguere tra p [] e p quando deduciamo l'argomento).
Quindi non possiamo usare all'operatore nome eliminare sia per casees e la necessità di introdurre un altro operatore delete [] con nome differente (suffisso [] può essere trattata come parte del nome dell'operatore) per caso array.
[modifica 2] Nota. delete p [] non è affatto una sintassi valida secondo lo standard corrente. Il ragionamento qui sopra mostra solo problemi che potrebbero emergere se provassimo a interpretare delete p [] usando concetti C++ esistenti.
Perché il downvote/votare per chiudere? Cosa posso fare per migliorare la domanda? – Michael0x2a
@Deflect: era mio, di solito 'perché è stato scelto questo costrutto linguistico?' le domande non sono semplicemente costruttive perché non c'è una risposta obiettiva e ragionevole. Tuttavia, in questo caso ci sono alcune ragioni decenti, quindi potrei aver giudicato troppo presto (ho rimosso il mio downvote abbastanza velocemente). – KillianDS
@ KillianDS: Ok, questo ha senso. Grazie per la risposta! [e rassicurandomi che non sono del tutto fuori base :)] – Michael0x2a