https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108487
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Known to work| |10.3.0 Known to fail| |10.4.0, 11.1.0, 14.2.0 --- Comment #12 from Jonathan Wakely <redi at gcc dot gnu.org> --- We still don't have code to make this more efficient (that would be Bug 100070) but the correct way to construct a vector from iota_view is C++23's std::ranges::to Adding this function: __attribute__((noinline)) std::vector<int> fn3(int n) { return std::ranges::to<std::vector<int>>(std::ranges::iota_view{0, n}); } And then calling it from main() I get: 3678697 35870273 3000809 So this is significantly better than the naive loop.