अंतिम अद्यतन:2026-10-12
C++20 Lambda एक्सप्रेशन (भाग 1)¶
C++20 - lambda टेम्प्लेट¶
C++14 generic lambda एक्सप्रेशन का समर्थन करता है, जिससे lambda किसी भी प्रकार के पैरामीटर ले सकता है, उदाहरण के लिए:
इसे इस तरह विस्तारित किया जाता है:
struct Func {
template <typename T1, typename T2>
auto operator()(T1 a, T2 b) const {
return a + b;
}
};
लेकिन नीचे दिए गए कुछ विस्तार रूप हासिल नहीं किए जा सकते:
पहला प्रकार: समान प्रकार
दूसरा प्रकार: केवल std::array
तीसरा प्रकार: कोई deduction नहीं
C++14 lambdas बढ़िया हैं, लेकिन C++20 हमें इन स्थितियों को आसानी से क्रियान्वयन करने की अनुमति देता है। C++20, lambda एक्सप्रेशन को परिभाषा में टेम्प्लेट प्रकार पैरामीटर उपयोग करने की अनुमति देता है, मूल सिंटैक्स इस प्रकार है:
नीचे कुछ उदाहरणों से इसके फ़ायदे समझाते हैं।
1. प्रकार सीमांकन¶
नीचे जैसे उदाहरण में, C++14 में हम यह कोड लिख सकते हैं, लेकिन उपयोग के समय भीतर आने वाला vector ही हो, यह गारंटीड नहीं, तो अपेक्षित व्यवहार से भिन्नता होगी, और त्रुटि पैदा होगी।
C++20 के बाद, हम इसके प्रकार को सीमित कर सकते हैं:
तो सवाल उठता है, एक इंटरव्यू प्रश्न: क्या आप जानते हैं C++14 में vector सीमित करने के लिए सुरक्षा कैसे सुनिश्चित करें?
2. परफ़ेक्ट फ़ॉरवर्डिंग¶
C++20 में आप परफ़ेक्ट फ़ॉरवर्डिंग बहुत आसानी से उपयोग कर सकते हैं, उदाहरण के लिए:
तो सवाल उठता है, C++14 की तुलना में इसका क्या फ़ायदा है? या कहें, C++14 में परफ़ेक्ट फ़ॉरवर्डिंग क्रियान्वयन करने के लिए क्या करना पड़ता है?
यह सेक्शन समाप्त
संबंधित विषय¶
- C++20 coroutines परिचय | C++那些事
- C++20 channel व्यवहारिक उपयोग | C++那些事
- C++20 Concepts अवधारणा | C++那些事
- C++20 constexpr और comma एक्सप्रेशन | C++那些事
- C++20 byte order endian | C++那些事
- C++20 Modules मॉड्यूल | C++那些事
- C++20 Ranges लाइब्रेरी | C++那些事
- C++20 std::span डिज़ाइन और जाल | C++那些事
- C++20 नई विशेषताओं की जानकारी | C++那些事
- C++20 [[likely]] और [[unlikely]] | C++那些事