使用时boost::any_range
,指定不应修改底层容器(如果有)的正确方法是什么?
例如,使用别名
template<typename T>
using Range = boost::any_range<T, boost::forward_traversal_tag>;
声明一个不能修改底层容器或“数据源”内容的范围,应该声明为
const Range<T> myRange;
或作为
Range<const T> myRange;
?
我怀疑第一个版本是正确的。但是const
,例如,如果我应用任何boost::adaptors
?
编辑
从文档中,显然元函数通过用而不是声明范围来range_iterator
“推断”const
底层容器的特性。即是(如果底层容器有这样的成员类型),而不是,所以容器不能通过这个迭代器进行修改。const T
T
range_iterator::<const T>::type
const_iterator
iterator
这是否意味着Range<const T>
也用于const_iterators
遍历范围?