algorithm のコールバック関数で iterator を受け取りたかった

for_each や find_if 等を使う時に、値ではなくて iterator として関数で受け取りたい場合があったのでちょっと調べてみました。
要は Boost.Range にある indirected の逆。
Boost.Range には見当たらなかったんですが PStade.Oven の を使えばいいみた。

[ソース]

#include <pstade/oven/outdirected.hpp>
#include <boost/range/algorithm/for_each.hpp>
#include <iostream>

int
main(){
    using boost::lambda::_1;
    using pstade::oven::outdirected;

    std::vector<int> v = {1, 2, 3, 4, 5};

    boost::for_each(v | outdirected, [](std::vector<int>::iterator it){
        std::cout << *it << std::endl;
    });

    return 0;
}

[出力]

1
2
3
4
5


答えを見つけるまでにだいぶ時間をかけてしまった…。