Boost.Assign generic_list::range()

Boost.Assignのlist_ofは、range()メンバ関数を使用することによって、他のRangeからlist_ofにデータを追加できるようです。list_ofは型変換演算子で他のRangeに変換可能なところが便利なので、これをpstade::oven::copiedの代わりのようにして使うことができます。


以下は、これを使った0〜10のRangeを生成する処理:

#include <iostream>
#include <vector>
#include <boost/assign/list_of.hpp>
#include <boost/range/irange.hpp>
#include <boost/range/algorithm/for_each.hpp>

int main()
{
    const std::vector<int> v = boost::assign::list_of(0).range(boost::irange(1, 10 + 1));

    boost::for_each(v, [](int x) { std::cout << x << std::endl; });
}
0
1
2
3
4
5
6
7
8
9
10

boost::assign::list_ofは1要素は必ず入れないといけないのがめんどくさいですね。
そのため、range()に渡すirangeは、1からの値を生成しています。