क्या मूल्य से कैप्चर करने का कोई तरीका है, और कैप्चर किए गए मूल्य को गैर-कॉन्स बनाएं? मेरे पास एक लाइब्रेरी फ़ैक्टर है जिसे मैं & पर कब्जा करना चाहता हूं, जिस तरह से गैर-आधार है लेकिन होना चाहिए।सी ++ 0x लैम्ब्डा मूल्य हमेशा कैप्चर द्वारा कब्जा?
निम्नलिखित संकलित नहीं है लेकिन foo :: ऑपरेटर() कॉन्स इसे ठीक करता है।
struct foo
{
bool operator() (const bool & a)
{
return a;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
foo afoo;
auto bar = [=]() -> bool
{
afoo(true);
};
return 0;
}
यह पूरी तरह से अलग चीजें करता है। वे विनिमय नहीं कर सकते हैं। यह ओपी के सवाल का जवाब नहीं देता है। –
इस समाधान की समस्या यह है कि यह लैम्ब्डा निष्पादित होने से पहले नष्ट कैप्चर किए गए स्थानीय चर के लिए काम नहीं करता है (उदाहरण के लिए, जब आप एक अलग std :: धागा शुरू करते हैं)। –