是否有可能/可实现否定升压滤波适配器,例如
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
而不是在 lambda 表达式中进行否定?
动机:我经常使用过滤器和 lambda 函数,但是当我多次使用过滤器时,我通常将其重构为自定义过滤器,例如
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