我有一个可在任意容器上运行的库函数。基本上,它打印元素。对于双向/随机访问容器,它首先打印,最后打印,仅单向打印。识别和使用双向性取决于有效的--container.end()。这在C++ 17中适用于std::array,但在C++ 20中,std::array具有ConstexprIterator而不是LegacyRandomAccessIterator
阅读https://en.cppreference.com/w/cpp/named_req/ConstexprIterator似乎ConstexprIterator确实没有operator--,而是与猫有关。
c++ - 为什么不是来自 std::array 双向/随机访问的 ConstexprIterator?-LMLPHP
所以我的问题是:为什么ConstexprIterator不是随机访问的还是至少是双向的?我的意思是,如果它在编译时有效,那么它实际上应该是随机访问的。

最佳答案


不是“代替”。



除了 ConstexprIterator 之外,迭代器还可以具有任何迭代器类别。
ConstexprIterator 要求类别(迭代器声称符合的)所需的所有操作都在编译时工作,仅此而已。
喵!

10-05 21:56