iota_view::iterator не двунаправленный
От: sergii.p  
Дата: 19.03.26 15:35
Оценка:
всем привет. Такая проблема.

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


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

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


Сейчас он уверенно виснет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.