¿Se permite el compilador a eliminar la copia que se requiere para la captura de valor bajo?C++ 0x: Capture By Value for Lambda, siempre una copia?
vector<Image> movie1;
apply([=movie1](){ return movie1.size(); });
- ¿Hay alguna circunstancia de que el compilador no necesita copiar
movie1
?- Tal vez si el compilador pudiera saber que
apply
en realidad no cambiomovie1
? - ¿O es útil que Lambdas sea por defecto
const
funtores en cualquier caso?
- Tal vez si el compilador pudiera saber que
- ¿Ayuda en absoluto que
vector
tiene un constructor movimiento y movimiento asignar?- En caso afirmativo, ¿es necesario agregarlos a
Image
también, para evitar una copia costosa aquí?
- En caso afirmativo, ¿es necesario agregarlos a
- ¿Hay alguna diferencia en el mecanismo de cómo y cuándo se requiere una copia de por valor de captura comparación con argumentos por valor? p.ej.
void operate(vector<Image> movie)
?
"¿por qué no capturar por referencia"? Estoy en el proceso de entender todas las implicaciones. Estoy de acuerdo. "La única diferencia ..." es una gran respuesta. ¡Perfecto! – towi