C ++ 17引入了ContiguousIterator
,但引入了there's no corresponding contiguous_iterator_tag
。
如果无法通过std::iterator_traits
检查/强制ContiguousIterator
使用实用?
此问题与contiguous iterator detection不同,因为它不是“为什么没有标签”,而是“如果没有标签如何使用”。
答案 0 :(得分:5)
C ++ 17中的命名要求是首要的表示法。如果它们强加了可检测的要求,则它们仅与语言中的可检测事物相关。而且ContiguousIterator并不对实现它们的类型强加可检测的要求。
因此ContiguousIterator允许您执行的最实用的操作是在文档中写“您必须传递ContiguousIterator”,同时要了解读者会追踪该术语的具体细节。但是不可以,C ++ 17中定义的ContiguousIterator不允许您编写任何可以静态检测不连续的ContiguousIterators和RandomAccessIterators之间差异的内容。