he recopilado esta utilizando Visual Studio 2010 compilador y tiene problemas de error del compilador en lambda anidada captura de las variables ya captadas por la primera lambda:anidada Lambda tema de captura
Functor& fn, const WorkData& workData
group.run([&fn, workData](){
async_future<ProcessorResult> future([&fn, workData]() -> ProcessorResult{
ProcessorResult result = fn.Process(workData);
return result;
});
});
me sale:
**error C3480**: '`anonymous-namespace'::<lambda3>::fn': a lambda capture variable must be from an enclosing function scope
Parece que al compilador no le gusta que intente capturar dentro de la instancia futura las variables ya capturadas por el método group.run().
Si creo copias locales funciona:
group.run([&fn, workData](){
Functor& fnlocal = fn;
WorkData workDatalocal = workData;
async_future<ProcessorResult> future([&fnlocal, workDatalocal]() -> ProcessorResult{
ProcessorResult result = fnlocal.Process(workDatalocal);
return result;
});
});
¿Es este comportamiento conformes? Siempre necesito hacer copias de las variables capturadas para capturar las mismas variables en una lambda anidada.
oog - características de este tipo son la razón por la que no tengo mucho interés en C++ 11. –
:-) Sí, pero lo arreglan – Ghita
arreglan * qué *? No estaba hablando del error del compilador, estaba hablando de las verrugas adjuntas al lenguaje. –