I thought he was saying the `end` in range begin/end was now allowed to be some empty signifier to tell things to look for the null pointer (null is a sentinel, but `end` itself is now empty). That may not be right, I don't know enough about the new concepts stuff and range seems to be part of that.
edit: looking at this it maybe covers it:
Re:Writing a custom iterator in modern C++
by mehrdadn on Monday December 21, 2020 @07:28PM
(#25501505)
Yes but I'm saying this is kind of moot when you're writing a struct that needs to store the iterators, because it can't get away with just storing the 'begin' -- you can't guarantee the second iterator you're storing will actually be the end. Meaning this iteration model isn't efficiently composable.
Re:Writing a custom iterator in modern C++
by stkdump on Monday December 21, 2020 @07:12AM
(#25494166)
Why would you need a union?
Re:Writing a custom iterator in modern C++
by mehrdadn on Monday December 21, 2020 @07:15AM
(#25494195)
Write me some code that shows me how to compose iterator-based ranges with just 1 iterator's worth of space in each range.
Re:Writing a custom iterator in modern C++
by stkdump on Monday December 21, 2020 @03:48PM
(#25499373)
It is not so clear to me what you mean. Maybe you can point to a better version (maybe what some other language does), and I can explain how I think the same can be done with C++20 ranges. I believe ranges are strictly more powerful than what other languages provide, and often they can be slimmer/more efficient for the common case.
Not 100% sure about the terminology. Pick whatever word might fit it better. I just called it a sentinel.