我有一个可在任意容器上运行的库函数。基本上,它打印元素。对于双向/随机访问容器,它首先打印,最后打印,仅单向打印。识别和使用双向性取决于有效的--container.end()
。这在C++ 17中适用于std::array
,但在C++ 20中,std::array
具有ConstexprIterator
而不是LegacyRandomAccessIterator
。
阅读https://en.cppreference.com/w/cpp/named_req/ConstexprIterator似乎ConstexprIterator
确实没有operator--
,而是与猫有关。
所以我的问题是:为什么ConstexprIterator
不是随机访问的还是至少是双向的?我的意思是,如果它在编译时有效,那么它实际上应该是随机访问的。
最佳答案
不是“代替”。
除了 ConstexprIterator 之外,迭代器还可以具有任何迭代器类别。
ConstexprIterator 要求类别(迭代器声称符合的)所需的所有操作都在编译时工作,仅此而已。
喵!