संक्षिप्त उदाहरण:
#include <iostream>
int main()
{
int n;
[&](){n = 10;}(); // OK
[=]() mutable {n = 20;}(); // OK
// [=](){n = 10;}(); // Error: a by-value capture cannot be modified in a non-mutable lambda
std::cout << n << "\n"; // "10"
}
प्रश्न: हमें mutable
कीवर्ड की आवश्यकता क्यों है ? यह पारंपरिक पैरामीटर से नामित कार्यों के लिए काफी अलग है। औचित्य क्या है?
मैं इस धारणा के तहत था कि कैप्चर-बाय-वैल्यू का पूरा बिंदु उपयोगकर्ता को अस्थायी बदलने की अनुमति देना है - अन्यथा मैं कैप्चर-बाय-संदर्भ का उपयोग करके लगभग हमेशा बेहतर हूं, क्या मैं नहीं हूं?
कोई आत्मज्ञान?
(मैं MSVC2010 का उपयोग कर रहा हूँ वैसे। AFAIK यह मानक होना चाहिए)
const
डिफ़ॉल्ट रूप से नहीं है।
const
डिफ़ॉल्ट रूप से है!