https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95322
Bug ID: 95322 Summary: std::list | take | transform, expression does not work cbegin() == end() Product: gcc Version: 10.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: gcc-bugs at marehr dot dialup.fu-berlin.de Target Milestone: --- Hello gcc-team, I'm not sure if this is intended behaviour, or if this is a defect in the standard, or something that you should never write in a generic context. ASFAIK you can use that expression on any container and on any view, but not on some(?!) combinations of views? This is a bit unexpected. ```c++ #include <concepts> #include <list> #include <ranges> int main() { std::list v{0,1 ,2, 3, 4, 5, 5, 6}; // works if std::vector auto view1 = v | std::views::take(5); auto view2 = v | std::views::transform([] (int i) { return i + 3;}); auto view3 = view1 | std::views::transform([] (int i) { return i + 3;}); std::ranges::cbegin(view1) == std::ranges::end(view1); // works std::ranges::cbegin(view2) == std::ranges::end(view2); // works std::ranges::cbegin(view3) == std::ranges::end(view3); // does not work return 0; } ``` https://godbolt.org/z/4Nzr69