仅使用“最后”参数提升irange

时间:2013-02-26 21:29:09

标签: c++ boost

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);
}

1 个答案:

答案 0 :(得分:2)

您没有使用模板参数。试试这个:

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