What breaks without implicitT*-to-bool conversion?

cpplang-slacklanguage-designllvmoverload-resolutionproposal

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.

Read More

Bill and Ted’sGodot: It’s awful

gilbert-and-sullivanlitclubtheater

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.”

Read More

PSA:views::single doesn’t really view

cpplang-slacklibrary-designpitfallsrangessum-types

Someone on thecpplang Slack asks:How can I view astd::pair<T, T> as if it were a range of twoTs?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);}
Read More

Parallel epigrams in Borges and Butler

litclub

Jorge Luis Borges,The Masked Dyer, Hakim of Merv(1934, tr. N. T. di Giovanni):

Read More

A poem all in dactylic noun substantives, part 3

poetryword-ways

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

Read More

A poem all in dactylic noun substantives, part 2

poetryword-ways

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.

Read More

A poem all in dactylic noun substantives, part 1

poetryword-ways

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.”

Read More

Counting polybar polyominoes

math

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.

Read More

Whenever a library clause uses CTAD or list-initialization, it’s wrong

class-template-argument-deductionlibrary-designpitfallswg21

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.

Read More

Varaldo’sShahrazad and Chiti’sCentunesimo Canto

dantehofstadterpoetrytranscriptionwebword-ways

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.”

Read More

On the art of correcting manuscripts, etc.

danteold-shittranscription

From Alessandro Torri’s preface to the first volume ofL’Ottimo Commentoas edited by himself and others of the Accademia della Crusca (1827):

Read More

True names matter in C++

cpplang-slackimplementation-divergencename-lookup

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.

Read More

D. C. Phillips’The Promised One (1915)

moralityold-shitpoetrytranscription

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:

Read More

Explainable Minesweeper and solvable nonograms

blog-roundupplayable-gamespuzzles

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.

Read More

Animating moving juggling patterns

jugglingweb

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.”)

Read More

Winning 4x4x4 tic-tac-toe by consulting an oracle

mathpuzzles

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.

Read More

Array member-initializers in GCC

antipatternscompiler-diagnosticsimplementation-divergenceinitializationlanguage-designwar-stories

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!

Read More

Wordle-like games require two word lists

crosswordshow-toplayable-gameswordle

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.”

Read More

Pernicious Rumor and “falling” stars

danteetymologylitclubold-shitpoetryscience

In Book 4 of Virgil’sAeneid, I find two noteworthy phrases.First, inVirgil’s descriptionof the monstrous goddess Rumor (lines 173–183; tr. Goold) —

Read More

Non-constexprOptional and trivial relocation

proposalrelocatabilitysum-typestrivialitywg21

Here’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;};
Read More Older posts are availablein the archive.