Когда я пишу лямбда с [=]
, означает ли это, что все мои локальные переменные будут скопированы в члены созданной структуры или я могу предположить, что только те, которые действительно используются в лямбда? Например:
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;
});
}
Какое из следующего, если оно есть, истинно?
- и n и v будут скопированы
- n будет скопировано, v не будет
- n будет скопирован, v может или не может быть скопирован в зависимости от настроек имплантации/оптимизации.
Предположим для аргумента, что конструктор векторной копии имеет побочные эффекты.