This talk is entirely about a short example, about a dozen lines of code, involving the interaction between views::istream<T> and views::take. The behavior might be surprising, but in order to make sense of it, we have to first really deeply understand the C++ iterator model and what end() really means. Only then can we even answer the questions: is this broken? Can we fix it?
View Slides
Barry is a senior C++ developer at Jump Trading in Chicago, a technology and engineering-driven trading firm. After programming for many years, he got really into the nuances and intricacies of C++ by being unreasonably active on StackOverflow (where he is the top contributor in every standard from C++14 up through C++26). A lot of his C++ knowledge comes from just answering questions that he doesn’t know the answers to, especially when he answers them incorrectly at first.
His C++ involvement escalated when he started attending standards committee meetings in 2016, having written dozens of papers for C++20, C++23, and now C++26. You might know him from such features as deducing this, explicit(bool), conditionally trivial special member functions, if consteval, packs in structured bindings, and now, reflection.
Outside of the C++ world, Barry is an obsessive swimming fan. He writes fun data articles for SwimSwam, which led him to be able to do work with a briefly-existing professional swim team (the DC Trident). He also periodically gets to interview a bunch of Olympians.