Range Concepts, Part 3 of 4: Introducing Iterables
In the last two blog posts, I describes the challenges I’ve encountered while building a next-generation range library. In this post, I’ll sketch for you my proposed solution: refinements of the range...
View ArticleRanges in C++: Counted Iterables and Efficiency
I’ve been hard at work fleshing out my range library and writing a proposal to get range support into the standard. That proposal describes a foundational range concept: Iterable. An Iterable is...
View ArticleRanges, Concepts, and the Future of the Standard Library
Frequent readers of this blog know that over the past year, I’ve been working on a modern range library suitable for standardization, integrating good ideas from hither and thither — particularly from...
View ArticleTiny Metaprogramming Library
(Difficult-to-grok metaprogramming below. Not for the faint of heart.) At the recent Urbana-Champaign meeting of the C++ Standardization Committee, Bill Seymour presented his paper N4115: Searching for...
View ArticleTo Be or Not to Be (an Iterator)
Way back in 1999, when the ink on the first C++ standard was still damp, Herb Sutter posed a GoTW puzzler in the still extant C++ Report (RIP): When Is a Container Not a Container? In that article,...
View ArticleIterators++, Part 1
In the last post, I described the so-called proxy iterator problem: the fact that iterators that return proxy references instead of real references don’t sit comfortably within the STL’s framework....
View ArticleIterators++, Part 2
Disclaimer: This is a long, boring post about minutia. For serious library wonks only. This is the third in a series about proxy iterators, the limitations of the existing STL iterator concept...
View ArticleIterators++, Part 3
This is the fourth and final post in a series about proxy iterators, the limitations of the existing STL iterator concept hierarchy, and what could be done about it. The first three posts describe the...
View ArticleRanges, Coroutines, and React: Early Musings on the Future of Async in C++
Disclaimer: these are my early thoughts. None of this is battle ready. You’ve been warned. Hello, Coroutines! At the recent C++ Committee meeting in Toronto, the Coroutines TS was forwarded to ISO for...
View ArticleStandard Ranges
As you may have heard by now, Ranges got merged and will be part of C++20. This is huge news and represents probably the biggest shift the Standard Library has seen since it was first standardized way...
View Article