Der Standard definiert new-type-id als längste Folge von neuen Deklaratoren . Es gibt auch eine Notiz, die eine ähnliche Situation darstellt (obwohl sie Zeiger auf Funktionen zuweist):
5.3.4 Neu [expr.new]
....
new-type-id:
type-specifier-seq neuer Deklarator optNeudeklarator:
ptr-operator neuer-declarator opt
noptr-new-declaratornoptr-new-declarator: [ Ausdruck ] attributspezifizierer-seq opt
noptr-new-declarator [ Konstantenausdruck ] attributspezifizierer-seq opt....
Die new-type-ID in einem neuen Ausdruck ist die längste mögliche Folge von neuen Deklaratoren . [ Hinweis : Dies verhindert Mehrdeutigkeiten zwischen den Deklaratoroperatoren
%Vor%&
,&&
,*
und[]
und ihre Ausdruckspartner. - Endnote ] [ Beispiel :
*
ist der Zeigerdeklarator und nicht der Multiplikationsoperator. - Ende Beispiel ][ Hinweis : Klammern in einer neuen Typ-ID eines neuen Ausdrucks können haben überraschende Effekte. [ Beispiel :
%Vor%ist schlecht gebildet, weil die Bindung
ist %Vor%Stattdessen die explizit eingeklammerte Version des
%Vor%new
-Operators kann verwendet werden, um Objekte zusammengesetzter Typen (3.9.2) zu erstellen:weist den Funktionen ein Array von 10 Zeigern zu (ohne Argument und Rückgabe von
int
. - Endbeispiel ] - Endnote ]
Tags und Links c++ new-operator syntax-error