【发布时间】:2021-12-29 15:12:28
【问题描述】:
见这个例子code:
#include <ranges>
int main() {
for(auto i : std::ranges::iota_view(1) | std::views::reverse)
break;
}
它在 gcc 上编译(我无法检查 clang/msvc - 因为它们不支持范围)。 当然——它“永远”运行并且什么都不做。
我还检查了在无限范围内执行 std::ranges::rbegin(inf) 或 std::ranges::rend(inf) 是不允许的(它不会编译)。
我不确定这是否是正确的 c++ 代码? 而且我对 std::ranges::reverse 实现很好奇——看起来 rbegin/rend 不用于实现这个视图——那么这个实现是如何工作的?
【问题讨论】:
标签: c++ g++ language-lawyer c++20 std-ranges