以下のコードではキャプチャモードを指定していませんが、some_staticはクロージャ内で表示されます。だから問題は、それが実際にキャプチャされているのか、あるいは何とか他の方法で参照されているのかどうかということです。ラムダはローカル静的変数をどのようにキャプチャしますか?
ボーナス問題は、コンパイラがこのようなラムダをクロージャではなくフリー関数にすることができるかどうかです。これはキャプチャリストが指定されていないため可能です。
std::vector<std::function<bool(int)>> filters;
int main()
{
static int some_static = 1;
filters.emplace_back([](int){
return some_static == 2;
});
}
あなたが何を求めているのかは分かりません。あなたはすでに何が起こったのか観察しました。どうしたの? –
静的変数は取得できません。 – cpplearner