5.3.4 नई [expr.new]
....
: वहाँ भी एक नोट है, जो एक ऐसी ही स्थिति को दिखाता है (हालांकि यह कार्यों के लिए संकेत आवंटित करती है) है नई प्रकार-आईडी:
प्रकार-विनिर्देशक-सेकनए declaratorऑप्ट
नए declarator:
ptr-ऑपरेटर नए declaratorऑप्ट
noptr-new-declarator
noptr-new-declarator:
[ अभिव्यक्ति ] विशेषता-विनिर्देशक-सेकऑप्ट
noptr-new-declarator [ निरंतर अभिव्यक्ति ] विशेषता-विनिर्देशक-सेक ऑप्ट
....
नए प्रकार आईडी एक में new- अभिव्यक्तिनए-घोषणाकर्ता का सबसे लंबा संभव अनुक्रम है। [नोट: इस declarator ऑपरेटरों &
, &&
, *
, और []
और उनकी अभिव्यक्ति समकक्षों के बीच अस्पष्टता से बचाता है।- अंत टिप्पणी] [उदाहरण:
new int * i; // syntax error: parsed as (new int*) i, not as (new int)*i
*
सूचक declarator और नहीं गुणा ऑपरेटर है। - अंत उदाहरण]
[नोट: एक नए प्रकार आईडी एक नई अभिव्यक्ति कर सकते हैं आश्चर्य की बात प्रभाव है की में कोष्ठकों। [उदाहरण:
new int(*[10])(); // error
बीमार का गठन क्योंकि बाध्यकारी
(new int) (*[10])(); // error
इसके बजाय, new
ऑपरेटर की स्पष्ट रूप से parenthesized संस्करण यौगिक प्रकार की वस्तुओं को बनाने के लिए इस्तेमाल किया जा सकता (3.9 है। 2):
new (int (*[10])());
कार्यों के लिए 10 पॉइंटर्स की एक सरणी आवंटित करता है (कोई तर्क नहीं लेना और int
लौट रहा है। - अंत उदाहरण] - अंत टिप्पणी]
संबंधित (लेकिन नकल नहीं): http://stackoverflow.com/q/16634713/1505939 –
क्योंकि एक * नए प्रकार आईडी * हो सकता है कोष्ठक नहीं है। लेकिन यह निश्चित रूप से एक संतोषजनक उत्तर नहीं है। – dyp
शायद इसे असंबद्धता के साथ करना है; जैसे 'int int()' को 'फ़ंक्शन' int (शून्य) ' – dyp