Quand j'écris un lambda [=]
, ça veut dire que toutes mes variables locales seront copiés dans les membres à la création de la structure ou puis-je penser que seuls ceux-ci qui sont effectivement utilisés dans le lambda? Par exemple:
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;
});
}
Lequel des énoncés suivants est vrai?
- n et v seront copiés
- n sera copié, v ne sera pas
- n sera copié, v peut ou ne peut pas être copié en fonction de la implmenentation/paramètres d'optimisation.
Supposons que pour la commodité du raisonnement que le vecteur du constructeur de copie a des effets secondaires.