An Alternative Design to Iterators and Ranges, Using std::optional

/an-alternative-design-to-iterators-and-