The pre-Kona WG21 mailing includes [N5028 "SoV and Collated Comments,"](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/n5028.pdf) which is the collation of all 26 National Bodies' comments on the C++26 [CD](/blog/2019/08/02/the-tough-guide-to-cpp-acronyms/#wg21-cd-dis-is-nb-wd). Nineteen NBs submitted comments. It is important to note that different NBs have different mechanisms for soliciting their comments. The US NB simply submits every comment it receives — no filter. My impre...| Arthur O’Dwyer
In ["What breaks without implicit `T*`-to-`bool` conversion?"](/blog/2025/10/05/pointer-to-bool-conversion/) (2025-10-05) I wrote that in a proprietary C++17 codebase my audit turned up "one non-`explicit` `operator bool`, and zero bugs." On closer inspection we found that that non-explicit `operator bool` actually was causing a real bug! Consider this hypothetical type that behaves something like `unique_ptr` ([Godbolt](https://godbolt.org/z/EMc96648a)): struct IntPtr { explicit IntPtr() = d...| Arthur O’Dwyer
C++20 took a small step by deciding (via P1957) that a T*-to-bool conversion should be considered narrowing, and thus forbidden in list-initialization. But could we go further and make T*-to-bool conversion non-implicit? I patched my local copy of Clang to forbid implicit conversion from T* to bool. Here’s all the things that broke when I compiled LLVM/Clang itself with my patched compiler.| Arthur O’Dwyer
Yesterday my wife and I went to see Waiting for Godot at the Hudson Theatre on Broadway, starring Alex Winter (you know, Bill) as Vladimir and Keanu Reeves (you know, Ted) as Estragon. This is of course stunt casting to the extreme. We went knowing this. Still, I feel like I have to get this off my chest: If you are not a “Godot” fan, you probably will not like this “Godot” — and if you are a “Godot” fan, you certainly will not like this “Godot.”| Arthur O’Dwyer
Someone on the cpplang Slack asks: How can I view a std::pair<T, T> as if it were a range of two Ts? That is, fill in the blank in this sample program: template<std::ranges::range R> void increment_all(R&& rg) { for (auto&& elt : rg) { elt = elt + 1; } } template<class T> auto F(std::pair<T, T>& kv) { ~~~~ } int main() { std::pair<int, int> kv = {1, 2}; increment_all(F(kv)); assert(kv.first == 2 && kv.second == 3); std::ranges::fill(F(kv), 4); assert(kv.first == 4 && kv.second == 4); }| Arthur O’Dwyer
Jorge Luis Borges, The Masked Dyer, Hakim of Merv (1934, tr. N. T. di Giovanni):| Arthur O’Dwyer
Cervantes [wrote](https://people.duke.edu/%7Egarci/garcitextos/bilingues/CERVANTES-MD/NOVELAS-EJEMPLARES/COLOQUIO-PERROS.HTM) satirically of a poet who had written— > "that part of the history of King Arthur of England which > Archbishop Turpin left unwritten, together with the history of the quest of the Holy Grail; > and all in heroic verse, part in rhymes and part in blank verse; but entirely dactylically—I > mean in dactylic noun substantives, without admitting any verb whatsoever." I...| Arthur O’Dwyer
Previously: ["A poem all in dactylic noun substantives, part 1"](/blog/2025/08/28/sin-admitir-verbo-alguno/) (2025-08-28). Cervantes [wrote](https://people.duke.edu/%7Egarci/garcitextos/bilingues/CERVANTES-MD/NOVELAS-EJEMPLARES/COLOQUIO-PERROS.HTM) satirically of a poet who had written— > "that part of the history of King Arthur of England which > Archbishop Turpin left unwritten, together with the history of the quest of the Holy Grail; > and all in heroic verse, part in rhymes and part in...| Arthur O’Dwyer
In Cervantes’ Coloquio de los perros (published 1613), a dog recounts all the colorful characters he’s met in his life. One is this frustrated poet: “I have strictly observed the rule laid down by Horace in his Poetica not to bring to light any work until ten years after it has been composed. Now I have a work on which I was engaged for twenty years, and which has lain by me for twelve […] a lofty, sonorous, heroic poem, delectable and full of matter; and yet I cannot find a prince to...| Arthur O’Dwyer
On 2025-06-25, Jacob Siehler tooted that there are exactly 100 bilaterally symmetric regions you can build out of a complete set of the five free tetrominoes.| Arthur O’Dwyer
Around New Year’s, while our book club was reading Dante’s Divine Comedy, I serendipitously happened across a reference in Douglas Hofstadter’s Le ton beau de Marot (page 125) to a book of poetry by Giuseppe Varaldo titled All’alba Shahrazad andrà ammazzata (“Shahrazad Shall Hang at Dawn”). Hofstadter writes: “In his astonishing tour de force of a book, Varaldo takes roughly fifty classics of Western literature and synopsizes each one in a perfectly constructed classical Italia...| Arthur O’Dwyer
In C++, there’s often multiple ways to refer to the same entity: aliases, inherited names, injected names, names that differ in qualification… Usually, if an entity has multiple names, which one you use won’t matter: you can use any of those synonymous names and the compiler won’t care. But each entity always has a uniquely “truest” name, privileged above all the other ways to refer to it. In some situations, in order to do a thing with an entity, you do actually need to call it b...| Arthur O’Dwyer
Here’s a simple and trivially relocatable MoveOnlyCallable type. This is like std::move_only_function<int(int) const>, except that the “take int and return int” part is hard-coded, for simplicity. (Godbolt.)| Arthur O’Dwyer
Back in 2021, I wrote that “Semantically ordered arguments should be lexically ordered too.” Two minor updates in that area, which are large enough to deserve a post of their own.| Arthur O’Dwyer
In October’s Overload magazine Chris Oldwood muses on Italo Calvino’s definition of what makes a book a “classic” (“Why Read the Classics?”, 1986). Calvino’s essay suggests fourteen different ways of describing the elephant that is “a classic,” including:| Arthur O’Dwyer
The other day I learned a new place where adding or removing noexcept can change the performance of your program: GNU libstdc++’s hash-based associative containers change the struct layout of their nodes depending on the noexceptness of your hash function. This is laid out fairly clearly in the docs; it’s simply bizarre enough that I’d never thought to look for such a thing in the docs!| Arthur O’Dwyer