मैं इस का उपयोग करते हुए दृश्य स्टूडियो 2010 संकलक तैयार की है और यह नेस्टेड लैम्ब्डा चर पहले लैम्ब्डा द्वारा पहले से ही कब्जा कर लिया पर कब्जा करने पर संकलक त्रुटि मुद्दे हैं:नेस्टेड लैम्ब्डा कब्जा मुद्दा
Functor& fn, const WorkData& workData
group.run([&fn, workData](){
async_future<ProcessorResult> future([&fn, workData]() -> ProcessorResult{
ProcessorResult result = fn.Process(workData);
return result;
});
});
मैं:
**error C3480**: '`anonymous-namespace'::<lambda3>::fn': a lambda capture variable must be from an enclosing function scope
ऐसा लगता है कि संकलक पसंद नहीं करता है कि मैं भविष्य के उदाहरण के अंदर कब्जा करने की कोशिश करता हूं जो पहले से ही group.run() विधि द्वारा कब्जा कर लिया गया चर है।
अगर मैं स्थानीय प्रतियां बनाने के काम करता है:
group.run([&fn, workData](){
Functor& fnlocal = fn;
WorkData workDatalocal = workData;
async_future<ProcessorResult> future([&fnlocal, workDatalocal]() -> ProcessorResult{
ProcessorResult result = fnlocal.Process(workDatalocal);
return result;
});
});
इस व्यवहार अनुरूप है? नेस्टेड लैम्ब्डा पर एक ही चर को कैप्चर करने के लिए मुझे हमेशा कैप्चर किए गए चर की प्रतियां बनाने की आवश्यकता होती है?
OOG - इस जैसी सुविधाओं के कारण मैं सी में ज्यादा रुचि नहीं है ++ 11। –
:-) हां, लेकिन वे इसे – Ghita
ठीक करते हैं * वे * क्या * ठीक करते हैं? मैं कंपाइलर बग के बारे में बात नहीं कर रहा था, मैं भाषा से जुड़ी मौसा के बारे में बात कर रहा था। –