ラムダ式について (できれば) 簡単な質問があります。
#include <vector>
#include <algorithm>
//----------------------------------------------------------------
void DoSomething()
//----------------------------------------------------------------
{
std::vector<int> elements;
elements.push_back(1);
elements.push_back(2);
int ref = 1;
auto printhit = [=](int iSomeNumber)
{
if (ref == iSomeNumber)
{
printf("Hit: %d\n", iSomeNumber);
}
else
{
printf("No Hit: %d\n", iSomeNumber);
}
};
ref = 2;
std::for_each(elements.begin(), elements.end(), printhit);
}
さて、私の質問は次のとおりです。キャプチャ[=]でprinthitを定義すると、「ヒット:1」が出力されます。参照 [&] で渡すと、"Hit: 2" と出力されます。「ref」へのアクセスをどのように許可しても、「Hit: 2」が出力されるように、for_each 内で置換が行われることをどういうわけか期待していました。
誰かが私にこれを説明できますか?
ありがとう、マーカス