आज मैं इस तरह कुछ कोड देखा:'कॉन्स decltype ((ए))' एक कॉन्स संदर्भ घोषित नहीं करता है?
int a = 0;
const decltype((a)) x = 10; // Error
const int b = 0;
decltype ((b)) y = 42; // Correct
मैं देख सकता हूँ क्यों सही कोड सही है, लेकिन मैं नहीं देख सकते हैं क्यों गलत कोड गलत है।
मैंने इसका परीक्षण किया, और बस इसे थोड़ा डरावना पाया।
const decltype((a)) x = 10;
यह const int&
सही परिभाषित करना चाहिए? लेकिन यह संकलन नहीं करता है! error: non-const lvalue reference to type 'int' cannot bind to a temporary of type 'int'
।
मैंने इसे const decltype((a)) x = a;
में बदल दिया, फिर यह संकलित करता है।
खैर, x
एक कॉन्स संदर्भ है? नहीं, मैंने पाया कि यह एक गैर-कॉन्स्ट संदर्भ है। मैं के माध्यम से a
के मान को संशोधित कर सकता हूं।
const
संशोधक क्यों प्रभावी नहीं हुआ? क्योंकि const
पूर्ण प्रकार है जो int&
है पर लागू होता है और int&
को const
को जोड़ने से यह int& const
जो int करने के लिए स्थिरांक संदर्भ है
'कॉन्स्ट' संदर्भ के संदर्भ में संदर्भ (और अनदेखा) पर लागू होता है। –
संशोधक के साथ 'decltype' संयोजन को ठीक तरह से 'टाइपेडफ'-एड प्रकार में संशोधक संशोधक की तरह काम करता है। यह टेक्स्ट प्रतिस्थापन नहीं है। –
@ टी.सी. @ बेन-वॉयग ओह, मुझे मिल गया। इसलिए 'int' के पूरे शरीर पर 'const' को 'int' के संदर्भ में लागू किया गया है, न केवल इसे 'const int' के रूप में जोड़ा गया है, कॉन्स्ट int के संदर्भ में ... सही है? – CyberLuc