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