出于某种原因,需要实现您自己的迭代器 ( Forward iterator
) ,它说明如下:
输入可以作为右值取消引用
输出可以作为左值取消引用(仅适用于可变迭代器类型)
在同一个地方,据说它Forward Iterator
应该包括 和 的Input iperator
功能Output iterator
。那么怎么Forward iterator
会有两个实现operator*
分别返回value_type
和reference_type
(rvalue
和lvalue
)呢?
现在的问题是:我是否正确理解我的问题的前一段是胡说八道,并且lvalue
根据上下文rvalue
定义的概念(UPD:变化),因此,实现Forward iterator
将包括返回一个参考可以这样使用lvalue
吗rvalue
?
cplusplus.com 有足够多的错误。
打开https://en.cppreference.com/w/cpp/iterator和https://en.cppreference.com/w/cpp/named_req/InputIterator并看到:
前向迭代器不必是输出迭代器(但必须是输入迭代器)。
*a
对于输入迭代器,它应该返回std::iterator_traits<..>::reference
,但是这个reference
可以由任何类型组成(你只需要能够将它转换为std::iterator_traits<..>::value_type
.但是前向迭代器
reference
必须匹配value_type &
.