Tiny 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 ArticleContainer Algorithms
The recent meeting of the C++ Standardization Committee in Urbana-Champaign was a watershed moment for my work on ranges. Ultimately, my presentation was well received (Herb Sutter used the phrase...
View ArticleA Slice of Python in C++
This post describes a fun piece of hackery that went into my Range-v3 library recently: a Python-like range slicing facility with cute, short syntax. It’s nothing earth-shattering from a functionality...
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 ArticlePost-Conditions on Self-Move
UPDATE April 8, 2016 This post has been edited since publication to reflect my evolving understanding. As a result of the issues raised in this post, it’s possible that the committee decides to...
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