जिन उदाहरणों से मैंने पाया है कि thisएक लंबोदर में कब्जा स्पष्ट रूप से उपयोग करता है; उदाहरण के लिए:
capturecomplete = [this](){this->calstage1done();};
लेकिन ऐसा लगता है कि इसका उपयोग करना भी संभव है; उदाहरण के लिए:
capturecomplete = [this](){calstage1done();};
मैंने इसे g ++ में जांचा, और इसे संकलित किया।
क्या यह मानक C ++ है? (और यदि हां, तो कौन सा संस्करण), या क्या यह विस्तार का कोई रूप है?
मैं इसे देख सकता हूं, लेकिन एक ही समय में यह भयावह लगता है कि एक साधारण कार्य क्या होना चाहिए।
—
प्लग
मुझे याद है कि MSVC (शायद केवल 2015) भी
—
लैंबडा
this
@plugwash: डेवलपर्स हमेशा आलसी हो जाते हैं और चीजों को कम करना चाहते हैं, और भाषा डिजाइनर अलग नहीं हैं। हालांकि, अस्पष्टता को हल करने के लिए अक्सर वर्बोसिटी की आवश्यकता होती है, और यही स्थिति यहां है।
—
फ्लेटर
this->स्पष्ट रूप से उपयोग करने का एक संभावित कारण है , जो यह सुनिश्चित करना है कि स्पष्ट रूप से कैप्चर किए गए मानों का उपयोग स्पष्ट रूप से किया जाता है। ध्यान दें कि[](){ calstage1done(); }कानूनी नहीं होगा, क्योंकिthisकब्जा नहीं किया जाएगा; लेकिनthisस्पष्ट रूप से कैप्चर करने पर , फ़ंक्शन बॉडी के लिए एक नज़र में प्रकट होना आश्चर्यजनक है कि वास्तव में कैप्चर किए गए मूल्य का उपयोग न करें[this](){ calstage1done(); }:।