oven::filtered

filteredは、引数で指定された述語を満たす要素を抽出するRangeアダプタです。

#include <iostream>
#include <vector>
#include <pstade/oven/initial_values.hpp>
#include <pstade/oven/io.hpp>
#include <pstade/oven/filtered.hpp>

using namespace pstade::oven;

bool is_even(int x) { return x % 2 == 0; }

int main()
{
    const std::vector<int> v = initial_values(1, 2, 3, 4, 5);

    std::cout << (v|filtered(&is_even)) << std::endl;
}
{2,4}

filteredの実装は、operator++が呼ばれたときに述語を満たさない要素を読み飛ばす(さらに進める)
filter_iteratorの範囲を作成する、というものになっています。


【参照】
pstade::oven::filtered