n4487 और अन्य सी ++ 17 संदर्भों के अनुसार, नया लैम्ब्डा फ़ंक्शन विनिर्देशक होगा - constexpr
, जो वर्तमान में "स्पष्ट रूप से निर्दिष्ट करता है कि फ़ंक्शन कॉल ऑपरेटर constexpr
फ़ंक्शन है।"। मैं भेड़ के बच्चे में निरंतर अभिव्यक्तियों के बारे में प्रेरणा को समझता हूं।डिफ़ॉल्ट रूप से कॉन्सटेक्स लैम्ब्डा?
4)
constexpr
विनिर्देशक लैम्ब्डा-declarator भीतर शामिल न करने पर, समारोह कॉल ऑपरेटर (या टेम्पलेट)constexpr
है अगर यह की आवश्यकताओं को संतुष्ट हैं: क्या मेरे लिए दिलचस्प है प्रस्ताव की बात 4 जिसमें कहा गया है एकconstexpr
समारोह।
यह मैं दो प्रश्न की ओर जाता है:
- हम
constexpr
विनिर्देशक आवश्यकता क्यों है? ऐसा लगता है कि लैम्ब्डा कॉल ऑपरेटरconstexpr
होगा या नहीं, केवल इस तथ्य पर निर्भर करता है कि यह "constexpr
फ़ंक्शन की आवश्यकताओं को पूरा करेगा", लेकिनconstexpr
विशिष्ट उपस्थिति से नहीं। - यदि यह डिफ़ॉल्ट रूप से
constexpr
लैम्ब्डा के लिए स्वीकार्य है, तो यह अन्य प्रकार के कार्यों के लिए भी क्यों प्रस्तावित नहीं है - उदाहरण के लिए वैश्विक कार्य? यदि संकलकconstexpr
के रूप में आवश्यकताओं को कवर करने वाले सभी कार्यों का इलाज शुरू करता है तो क्या प्रभाव होगा?