ブーストフィルターアダプターを無効にすることは可能/達成可能ですか?
std::vector<int> v = {1, 2, 3, 4, 5};
for(auto i : v | !filtered(is_even))
std::cout << i << std::endl; // prints 1,3,5
ラムダ式内で否定を行う代わりに?
動機:私はフィルター処理された関数とラムダ関数をよく使用しますが、フィルターを複数回使用する場合は、通常、カスタムフィルターにリファクタリングします。
for(auto i : v | even) // note: my filters are more complex than even.
std::cout << i << std::endl; // prints 2,4
現在、否定が必要な場合は、それらのカスタムフィルターを作成しています。
for(auto i : v | not_even)
std::cout << i << std::endl; // prints 1,2,3
しかし、フィルターを無効にできる方がいいと思います。
for(auto i : v | !even)
std::cout << i << std::endl; // prints 1,2,3