Why Iterators Got It All Wrong — and what we should use instead
C++ iterators are broken by design. Their ambiguity creates subtle bugs with modern ranges. It's time for a safer, more explicit model.
#1about 1 minute
The dual role of C++ iterators as elements and borders
C++ iterators, modeled after pointers, are used ambiguously to represent both specific elements and the borders between them.
#2about 1 minute
Writing cleaner code with C++ ranges
C++20 ranges simplify code by reducing the boilerplate of begin() and end() calls required with traditional iterator pairs.
#3about 4 minutes
Using range adapters for lazy transformations
Range adapters like transform allow for lazy evaluation, separating data projection from the search operation for more modular code.
#4about 2 minutes
How filter adapters create ambiguity for borders
The filter adapter demonstrates a flaw where mapping a border from a filtered range back to the original range is ambiguous.
#5about 5 minutes
The core problem with the reverse adapter
The reverse adapter proves that a single .base() method cannot correctly map both elements and borders back to the original range.
#6about 3 minutes
A formal solution with element and border concepts
The fundamental iterator flaw can be solved by introducing two distinct concepts: 'border' for positions between items and 'element' for the items themselves.
#7about 4 minutes
Improving algorithms with nullable elements and better names
Further improvements include making element types nullable to handle 'not found' cases cleanly and using more descriptive algorithm names like binary_find.
#8about 2 minutes
Conclusion and the think-cell range library
The think-cell C++ range library implements concepts like nullable elements and refined algorithms to address the inherent flaws in standard iterators.
#9about 4 minutes
Q&A on iterator invalidation and border types
The speaker addresses audience questions regarding how the border and element distinction interacts with container iterator invalidation and mathematical open or closed intervals.
Related jobs
Jobs that call for the skills explored in this talk.
5 Reasons Why Attending Conferences in 2026 Matters More Than You ThinkIt’s 2026, and the “remote vs. office” debate has finally settled into a high-tech hybrid reality. While we’ve perfected the art of shipping production-grade code from decentralized hubs and home setups, something shifted. We realized that while AI c...
All the videos of Halfstack London 2024!Last month was Halfstack London, a conference about the web, JavaScript and half a dozen other things. We were there to deliver a talk, but also to record all the sessions and we're happy to share them with you. It took a bit as we had to wait for th...
From learning to earning
Jobs that call for the skills explored in this talk.