我试图理解什么时候会使用iterator::value_type
。因为,所有迭代器的运算符似乎都只使用iterator::pointer
和iterator::reference
。
问题:iterator::value_type
是否真正被用到了?
额外问题:一个继承自
std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, bool*, bool&>
提出一些语义问题?
编辑:为了理解我提出这个问题的原因,是因为我正在为一个类型编写迭代器,其中pointer
和reference
是代理类。
value_type
作为单独的typedef
显然是有用的,因为remove_reference_t<decltype(*begin)>
不再是底层值的类型,而是代理的类型。 - vsoftco