मैं सिर्फ draft of the C++11 standard के माध्यम से ब्राउज़ कर रहा था और पाया निम्नलिखित पेचीदा बयान (§13.6/8):संकेत पर एकल +
हर प्रकार के लिए
T
वहाँ मौजूद फार्म के उम्मीदवार ऑपरेटर कार्योंT* operator+(T*);
पॉइंटर पर यह "यूनरी +" ऑपरेटर कैसे समझा जाना चाहिए? क्या यह सामान्य मामले में सिर्फ एक नो-ऑप है, जिसे फिर भी ओवरलोड किया जा सकता है? या क्या यहां कुछ गहरा बिंदु है, मैं यहां याद कर रहा हूं?
तो 'टी * ऑपरेटर + (टी *); 'सदस्य या वैश्विक है? और लैम्ब्डा के मामले में -> '+ [] {};' मुझे क्या आश्चर्य है? धन्यवाद –
@AngelusMortis: पॉइंटर्स के सदस्य नहीं हो सकते हैं; यह अंकगणितीय प्रकारों के लिए भाषा के बिल्टिन यूनरी 'ऑपरेटर +' का उपयोग करता है।और '+ [] {} 'का प्रकार' शून्य (*)() 'है, क्योंकि कैप्चरलेस लैम्ब्स पर यूनरी' ऑपरेटर + 'के रूप में लैम्ब्डा को फ़ंक्शन पॉइंटर में परिवर्तित करता है। – ildjarn
प्रिय महोदय, मैं अभी भी थोड़ा उलझन में हूं, इसलिए lemme अपने बयान उद्धृत करके पूछता है -> "पॉइंटर्स के पास सदस्य नहीं हो सकते हैं" हां, लेकिन मैंने शुरू में सोचा था कि लैम्ब्स को क्लास प्रकारों (कंपाइलर्स द्वारा) ओवरलोडिंग 'ऑपरेटर()' में परिवर्तित किया जाता है, इसलिए मैंने सोचा कि वे सदस्य हो सकते हैं। अब आपका कथन "यह अंकगणितीय प्रकारों के लिए भाषा के बिल्टिन यूनरी 'ऑपरेटर +' का उपयोग करता है", मुझे यकीन है कि अंकगणितीय प्रकार मूल रूप से अभिन्न + फ्लोट प्रकार हैं, फिर अभिव्यक्ति -> '+ []()' -> 'ऑपरेटर + (some_unknown_type_I_don 't_know) '->' शून्य (*)()' –