gpt4 book ai didi

c++ - forward_iterator 概念的冗余?

转载 作者:行者123 更新时间:2023-12-03 20:22:51 24 4
gpt4 key购买 nike

[iterator.concept.forward] , std::forward_iterator定义为:

template<class I>
concept forward_­iterator =
input_­iterator<I> &&
derived_­from<ITER_CONCEPT(I), forward_iterator_tag> &&
incrementable<I> &&
sentinel_­for<I, I>;
std::sentinel_for<I, I> 定义为:
template<class S, class I>
concept sentinel_­for =
semiregular<S> &&
input_­or_­output_­iterator<I> &&
weakly-equality-comparable-with<S, I>;
这在 std::forward_iterator 中似乎是多余的的要求,因为 input_iterator已有模型 input_or_output_iterator , 和 incrementable 定义为:
template<class I>
concept incrementable =
regular<I> &&
weakly_­incrementable<I> &&
requires(I i) {
{ i++ } -> same_­as<I>;
};
哪些型号 regular 哪些型号 semiregular equality_­comparable 哪些型号 weakly-equality-comparable-with<I, I> .
为什么标准需要在这里添加一个看似多余的约束,这背后的考虑是什么?

最佳答案

forward_­iterator需要sentinel_for的语义要求.这些都不是由 regular 暗示的或 equality_comparable .

关于c++ - forward_iterator 概念的冗余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67774510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com