我正在编写一个自定义输入迭代器,它可以调整基础序列并产生转换后的值(我知道boost::transform_iterator
,但这很特别)。
我不确定如何为此迭代器定义pointer
- 类型。由于迭代器动态生成值,reference
被定义为value_type
的别名(允许输入迭代器,reference
必须只能转换为value_type
)。我的直觉是,它仍然只是value_type *
,我无法想到任何有意义的事情。
但是,我还没有找到有关预期使用pointer
的上下文的任何信息,因此不知道对它有什么要求,以及{的文档{1}}(通常提供有用的建议)在这个问题上保持沉默。
所以我的问题是,将boost::transform_iterator
定义为pointer
通常是否安全?如果没有,有哪些替代方案?
答案 0 :(得分:2)
我能在标准中找到的唯一可以引用它们的内容来自[iterator.traits]
[...]另外,类型
iterator_traits<Iterator>::reference iterator_traits<Iterator>::pointer
应定义为迭代器的引用和指针类型,即迭代器对象
a
,分别与*a
和a->
的类型相同。