【发布时间】:2018-12-08 03:52:31
【问题描述】:
我搜索了各种 Range TS 提案,包括 P0896,将范围合并到 C++20 中的提案。从我的阅读看来,Iterator 概念在可取消引用方面的唯一要求是 *t 是产生某种类型对象的有效语法。
由于InputIterator 被定义为Iterator 和Readable,两者都不需要operator-> 支持,看来Range TS 和C++20 不需要迭代器提供@ 987654328@支持。
是这样吗?
【问题讨论】:
-
嗯。它仍然列在P1037 的输入迭代器要求中(搜索
a->m)。但是有一句话在别处删除了该要求(搜索i->m)。 -
当然
Iterator<int*>和InputIterator<int*>应该是正确的。并不是说当值类型仅为类类型时该提案不能要求operator->,但我不确定这是否会引入其他复杂性。 -
@Barry 在 P1037R0 中,在我看来箭头要求适用于英文术语“输入迭代器”,但不适用于 C++ 概念
std::ranges::Iterator。