What breaks without implicitT*
-to-bool
conversion?
T*
-to-bool
conversion?C++20 took a small step by deciding(viaP1957)that aT*
-to-bool
conversion should be considered narrowing, and thus forbiddenin list-initialization. But could we go further and makeT*
-to-bool
conversionnon-implicit?
I patched my local copy of Clang to forbid implicit conversion fromT*
tobool
.Here’s all the things that broke when I compiled LLVM/Clang itself with my patched compiler.
Bill and Ted’sGodot: It’s awful
Yesterday my wife and I went to seeWaiting 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 haveto get this off my chest: If you are not a “Godot” fan, you probably will not likethis “Godot” —and if you are a “Godot” fan, youcertainly will not like this “Godot.”
PSA:views::single
doesn’t really view
views::single
doesn’t really viewSomeone on thecpplang Slack asks:How can I view astd::pair<T, T>
as if it were a range of twoT
s?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);}
Parallel epigrams in Borges and Butler
Jorge Luis Borges,The Masked Dyer, Hakim of Merv(1934, tr. N. T. di Giovanni):
A poem all in dactylic noun substantives, part 3
Cervanteswrotesatirically of a poet who had written—
“that part of the history of King Arthur of England whichArchbishop 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—Imean in dactylic noun substantives, without admitting any verb whatsoever.”
Inpart 2we saw that he didn’t really meanno verbs, just noline-terminal verbs; and likewisethe word “dactylic” (“todo … en esdrújulos”) referred only to the line-terminal stress pattern, notto the contents of his dictionary. But what if hehad meant those constraints in the most restrictivesense possible? Discarding (read: forgetting) the “part in rhymes” constraint, he might have writtensomething like the following — which one might in dactylic substantives christen theTurpentine Comedy:
I. Argument.
poesy chronicle history Camelot
emperor majesty conqueror Caliburn
A poem all in dactylic noun substantives, part 2
Previously:“A poem all in dactylic noun substantives, part 1” (2025-08-28).Cervanteswrote satirically of a poet who had written—
“that part of the history of King Arthur of England whichArchbishop 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—Imean in dactylic noun substantives, without admitting any verb whatsoever.”
Over onLiterature StackExchange,Clara Díaz Sánchez explains that in the late 16th and early 17th century, there was in fact afad for poetry in which many lines ended in dactyls.
A poem all in dactylic noun substantives, part 1
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 hisPoetica not to bring to lightany work until ten years after it has been composed. Now I have a work on which I was engagedfor twenty years, and which has lain by me for twelve […]a lofty, sonorous, heroic poem, delectable and full of matter; and yetI cannot find a prince to whom I may dedicate it.”
“What is the subject of the work?” inquired the alchemist.
“It treats,” said the poet, “of that part of the history of King Arthur of England whichArchbishop 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—Imean in dactylic noun substantives, without admitting any verb whatsoever.”
Counting polybar polyominoes
On 2025-06-25, Jacob Siehlertooted thatthere are exactly 100 bilaterally symmetric regions you can build out of a complete set ofthe five free tetrominoes.
Whenever a library clause uses CTAD or list-initialization, it’s wrong
Over the past few years, I’ve noticed a pattern in several LWG issues:In library clauses, CTAD and list-initialization are never helpful and aresometimes harmful, in the sense that they create LWG issues to triage and fix.I’d noticed for several years “this happens a lot,” but I’d never collectedall my anecdotes into one list. I’m starting that list now.As Wikipedia says, “This list is incomplete”; please let me know if you see any I’ve missed.
Varaldo’sShahrazad and Chiti’sCentunesimo Canto
Around New Year’s, while our book club was reading Dante’sDivine Comedy,I serendipitously happened across a reference in Douglas Hofstadter’sLe ton beau de Marot(page 125)to a book of poetry by Giuseppe Varaldo titledAll’alba Shahrazad andrà ammazzata(“Shahrazad Shall Hang at Dawn”). Hofstadter writes:“In his astonishingtour de force of a book, Varaldo takes roughly fiftyclassics of Western literature and synopsizes each one in a perfectly constructedclassical Italian-style sonnet, in whichjust one vowel appears.”
On the art of correcting manuscripts, etc.
From Alessandro Torri’s preface to the first volume ofL’Ottimo Commentoas edited by himself and others of the Accademia della Crusca (1827):
True names matter in C++
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 aboveall the other ways to refer to it. In some situations, in order to do a thingwith an entity, you do actually need to call it by its “true name.” Here is a(non-exhaustive) list of such situations.
D. C. Phillips’The Promised One (1915)
My grandmother’s grandfather was David Celyddon Phillips (1848–1915),Welsh-born minister and poet, known by thebardic name“Celyddon.” Recently I learned that my second cousin David M. Phillips Jr.has in his possession a leatherbound, hand-written copy of D. C. Phillips’long narrative poemThe Promised One, or, Jesus of Nazareth — previouslyunpublished as far as either of us know, despite that one of Celyddon’s lengthyobituaries mentions:
Explainable Minesweeper and solvable nonograms
Via Hacker News:“Making Explainable Minesweeper”(July 2025). By “explainable Minesweeper,” the blogger means that we generate a Minesweeper level that is guaranteedsolvable by perfect play — that is, for which the solution never requires “guessing” at an unknown cell (and possibly losingthe game at that point). The blogger describes a procedure for creating partially explainable levels: simply generatea random level, then simulate solving it with a computer player that knows only certain heuristics. If the computer playercompletes the level without guessing, then it’s good; otherwise, generate a new random level and repeat.
Animating moving juggling patterns
About 15 years ago I was active with theSanta Barbara Jugglers Association(which still exists and still meets up by UCSB in Isla Vista). They’re particularly known forclub-passing inmoving patterns. We’re talking things likeHavana andShooting Star. (I don’t think either of those patterns came outof Isla Vista, mind you. I don’t know where either of themdid come from. TheMadison Area Jugglers’ Pattern Book credits Shooting Star to“Bryan Olson in 1993.”)
Winning 4x4x4 tic-tac-toe by consulting an oracle
4x4x4 Tic-Tac-Toe is played on a 4x4x4 cube, containing 64 cells.The first player to get 4 of their own symbols in a row (in anyorthogonal or diagonal direction, including the cube’sspace diagonals)wins.
Array member-initializers in GCC
The other day I ran across some code like this:
template<class T>struct Holder { T t_; explicit Holder() : t_() {} Holder(const Holder& rhs) : t_(rhs.t_) {} ~~~~};
This was in an old codebase, which until recently had still been usingGCC’s-Weffc++
to enforce C++98 idioms such as the explicitly non-defaultedcopy constructor depicted above.
If you’re still using
-Weffc++
, please,stop using it!
Wordle-like games require two word lists
Suppose you’re implementing a “Wordle-like” game suchas Juho Snellman’sHuewords orAlan Bellows’Omiword. The defining principleof such games (as I’m defining them here, anyway!) is that the solution tothe puzzle is an arrangement of English words which satisfies some criterion,and the player arrives at that solution byguessing various English words,such that the game must differentiate “that’s a valid word, but not the answer”from “that sequence of letters isn’t even a word.”
Pernicious Rumor and “falling” stars
In Book 4 of Virgil’sAeneid, I find two noteworthy phrases.First, inVirgil’s descriptionof the monstrous goddess Rumor (lines 173–183; tr. Goold) —
Non-constexprOptional
and trivial relocation
Optional
and trivial relocationHere’s a simple non-constexpr-friendlyOptional
type. (Godbolt.)
template<class T>class [[trivially_relocatable(std::is_trivially_relocatable_v<T>)]] Optional {~~~~ alignas(T) char data_[sizeof(T)]; bool engaged_ = false;};