なぜコールバックは一度だけ呼び出されますか?ラムダ募集
bool callback()
{
static bool res = false;
res = !res;
return res;
}
int main(int argc, char* argv[])
{
vector<int> x(10);
bool result=false;
for_each(x.begin(),x.end(),var(result)=var(result)||bind(callback));
return 0;
}
Boost.Lambdaの演算子|| bind()が返すfunctorオブジェクトの遅延実行能力と併せて短絡するように特別に設計されています。通常の過負荷演算子||短絡しないでください。 –
ええ、それはそれの素晴らしい特徴です。通常、演算子のオーバーロードが発生すると、短絡が発生しません。ブーストラムダはそれを世話しているようだ。 –