¿Implica [=] que se copiarán todas las variables locales?
Cuando escribo un lambda con[=]
, ¿significa que todas mis variables locales se copiarán en miembros de la estructura creada o puedo suponer que solo se utilizarán aquellas que realmente se usan en la lambda? Por ejemplo:
void f()
{
vector<int> v(10000);
const int n = 5;
const int DivByNCnt = count_if(istream_iterator<int>(cin), istream_iterator<int>(),
[=](int i)
{
return i % n == 0;
});
}
¿Cuál de los siguientes, si alguno, es verdadero?
tanto n como v serán copiadosn será copiado, v no serán será copiado, v puede o no ser copiado dependiendo de la configuración de implementación / optimización.Supongamos, por el bien del argumento, que el constructor de copias de vectores tiene efectos secundarios.