当我用 编写 lambda 时[=]
,这是否意味着我的所有局部变量都将被复制到创建的结构的成员中,还是我可以假设只有那些在 lambda 中实际使用的变量?例如:
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 可能会或可能不会被复制,具体取决于实施/优化设置。
为了参数的缘故,假设 vector 的复制构造函数有副作用。