でラムダを書くとき[=]
、それはすべてのローカル変数が作成された構造体のメンバーにコピーされることを意味しますか、それともラムダで実際に使用されるものだけを想定できますか?例えば:
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のコピーコンストラクターに副作用があるとします。