Здравствуйте, 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)};