पहले इस विषय पर चर्चा की गई थी , लेकिन यह कोई नकल नहीं है।
जब कोई decltype(a)और के बीच के अंतर के बारे में पूछता है decltype((a)), तो सामान्य उत्तर है - aएक चर है, (a)एक अभिव्यक्ति है। मुझे यह उत्तर असंतोषजनक लगता है।
पहला, aएक अभिव्यक्ति है। प्राथमिक अभिव्यक्ति के विकल्प में अन्य शामिल हैं -
- (अभिव्यक्ति)
- आईडी अभिव्यक्ति
इससे भी महत्वपूर्ण बात, घोषणापत्र के लिए कथानक कोष्ठकों को बहुत स्पष्ट रूप से मानता है :
For an expression e, the type denoted by decltype(e) is defined as follows:
(1.1) if e is an unparenthesized id-expression naming a structured binding, ...
(1.2) otherwise, if e is an unparenthesized id-expression naming a non-type template-parameter, ...
(1.3) otherwise, if e is an unparenthesized id-expression or an unparenthesized class member access, ...
(1.4) otherwise, ...
तो सवाल बना हुआ है। कोष्ठक को अलग तरह से क्यों माना जाता है? क्या कोई इसके पीछे तकनीकी कागजात या समिति चर्चा से परिचित है? कोष्ठक के लिए स्पष्ट विचार से लगता है कि यह कोई निरीक्षण नहीं है, इसलिए मुझे गायब होने का तकनीकी कारण होना चाहिए।
(a)एक अभिव्यक्ति है, औरaएक अभिव्यक्ति और एक चर है"।