ContiguousIterator 有实际用途吗?

4

@swordfish 这个问题不同于“连续迭代器检测”,因为它不是“为什么它没有标签”,而是“如果它没有标签,它该如何使用”。 - Dev Null
@swordfish 我已经重新阅读了它(实际上我在我的原始问题中引用了它)。您能否指出被接受的答案如何解决“如何在实践中使用连续迭代器”的问题? - Dev Null
@Swordfish 评论不是答案。在我看来,这是一个有效的问题(也是我很想知道答案的问题)。 - jonspaceharper
3
@JonHarper:这个评论甚至没有回答这个问题。它谈论了一个关于C++20中概念和范围的提案,与这个C++17特性无关。事实上,该提案甚至没有提出检测连续迭代器的方法,只有连续范围。 - Nicol Bolas
1个回答

5
在C++17中,命名要求首先是符号表示法。只有在它们施加可检测的要求时,它们才与语言中可检测的事物相关联。而ContiguousIterator对于实现它们的类型不会施加可检测的要求。
因此,ContiguousIterator所能做的最实际的事情是在文档中编写“您必须传递一个ContiguousIterator”,并且读者将理解该术语的具体细节。但是,C++17中定义的ContiguousIterator不允许您编写任何可以静态检测ContiguousIterators和非连续的RandomAccessIterators之间差异的内容。

这是因为C++17没有概念(Concepts),但ContiguousIterator建立了一个概念本该有的约束限制(我预测C++20中已经有了概念)? - jonspaceharper
1
@JonHarper:“这是因为C++17没有概念。” 这是无稽之谈。即使不检查“random_access_iterator_tag”,您也可以使用SFINAE技巧检测RandomAccessIterator。它不起作用是因为C++17的ContiguousIterator没有定义任何静态可检测的内容。范围集成提案明确添加了一个“contiguous_iterator_tag”,现在可以检测到它们了。 - Nicol Bolas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接