0

デフォルトの引数として 0 を使用し、元の引数として指定された を使用して、引数をboost::irange1 つだけ取る拡張機能はありますか?intfirstintlastirange

たとえば、私はすでにこれを行うことができます:

foreach(int i, irange(0, 3))
    cout << i << endl;

rangeしかし、次のように、Python の関数と同じ機能が必要です。

foreach(int i, irange(3))
    cout << i << endl;

この拡張機能が存在しない場合は、自分で簡単に作成できるはずですが、次のコードは機能しません。

template<class Integer>
iterator_range< range_detail::integer_iterator<Integer> > irange(int last){
    return irange(0, last);
}
4

1 に答える 1

2

テンプレート引数を使用していません。代わりにこれを試してください:

template<class Integer>
boost::iterator_range< boost::range_detail::integer_iterator<Integer> > irange(Integer last)
{
    return boost::irange(static_cast<Integer>(0), last);
}
于 2013-02-26T21:35:24.057 に答える