मैं lambdas कि कुछ भी कब्जा नहीं है, हो रही हैकभी नहीं DefaultConstructible
[](){};
मैं एक टेम्पलेट वर्ग है की तरह सी ++ में एक लैम्ब्डा, कि इस तरह के एक लैम्ब्डा शामिल क्यों है। चूंकि लैम्ब्डा में गैर स्थैतिक डेटा सदस्य नहीं होते हैं, न ही आभासी कार्य होते हैं, यह एक खाली वर्ग और डिफ़ॉल्ट संरचनात्मक होना चाहिए। यह टेम्पलेट मेटाप्रोग्रामिंग के लिए उपयोग करने योग्य नीति वर्ग का एक प्रकार है। मैं जानना चाहता हूं, क्यों सी श्रेणी + मानक द्वारा ऐसी कक्षा डिफ़ॉल्ट रूप से रचनात्मक नहीं है।
Sidenote:Understanding how Lambda closure type has deleted default constructor एक अलग सवाल पूछ रहा है, हालांकि शीर्षक बहुत समान लगता है। यह पूछ रहा है कि एक स्टेटलेस लैम्ब्डा-ऑब्जेक्ट कैसे उपयोग योग्य डिफॉल्ट कन्स्ट्रक्टर के बिना बनाया गया है। मैं पूछ रहा हूं कि कोई उपयोग करने योग्य डिफ़ॉल्ट कन्स्ट्रक्टर क्यों नहीं है।
[यह प्रश्न] (http: // stackoverflow।कॉम/प्रश्न/32 9 1172 9/समझ-कैसे-लैम्ब्डा-क्लोजर-टाइप-है-डिलीट-डिफॉल्ट-कन्स्ट्रक्टर) प्रासंगिक हो सकता है। –
आप कैसे लैम्ब्डा को डिफॉल्ट-निर्माण करेंगे? '[] {} 'पहले से ही एक बनाता है और आपको उदाहरण देता है। – rustyx
@rustyx ऐसा ही है: 'auto f =() [] {}; f_t = decltype (f) का उपयोग कर; f_t {}; '- यह काम करता है, लेकिन इस तथ्य के लिए कि लैम्बडा ने डिफॉल्ट कन्स्ट्रक्टर को हटा दिया है। –