使用时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 TTrange_iterator::<const T>::typeconst_iteratoriterator
这是否意味着Range<const T>也用于const_iterators遍历范围?