Re: iota_view::iterator не двунаправленный
От: rg45 СССР  
Дата: 19.03.26 16:25
Оценка: +1
Здравствуйте, sergii.p, Вы писали:

SP>всем привет. Такая проблема.


SP>
SP>const auto fpsRange = std::ranges::iota_view(1, 32);
SP>auto it = fpsRange.begin();
SP>std::advance(it, 100); // Ok
SP>std::advance(it, -10); // UB
SP>


SP>что за фигня? Там же внутри итератора простое число хранится. Почему не разрешить обратный проход?

SP>Или может кто знает, как сделать с минимумом телодвижений двунаправленный. Идея в том, чтобы заработал такой код

SP>
SP>const auto testFps = [](int fps) { return fps < 15; };
SP>auto it = std::ranges::lower_bound(fpsRange, true, std::ranges::less{}, [&](int fps){ return !testFps(fps); });
SP>


SP>Сейчас он уверенно виснет.


    const std::vector fpsRange {std::from_range, std::views::iota(1, 32)};
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.