Standard 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 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 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 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 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 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 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 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 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 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 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 ArticleCustomization Point Design in C++11 and Beyond
(Disclaimer: here be esoteric language wonkery. Abandon all hope.) If you read or write Generic-code-with-a-capitol-‘G’, you may have written or seen code like this: using std::swap; swap( a, b ); The...
View ArticleN4128: Ranges for the Standard Library
Eleven months ago, I began work on an updated range library for modern C++. Yesterday, I submitted a proposal to the C++ standardization committee to add ranges to the Standard Library. The proposal...
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 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 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 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 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 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 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 Article