0

是否有一个扩展boost::irange只需要一个int参数,使用 0 作为默认first参数,而给定int作为last原始参数irange

例如,我已经可以这样做了:

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

但我想要与 Python 的函数相同的range功能,如下所示:

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 回答