June 23, 2026

Prints charming, comments savage

Improvements to Std:Format in C++26

C++ gets easier, but the comments are roasting the missing receipts

TLDR: C++26 makes everyday text output much easier, including cleaner file paths and direct pointer printing, with a fix for broken Windows path text. Commenters were amused and annoyed in equal measure, cracking jokes, demanding clearer examples, and immediately asking why decimal numbers still aren’t fully supported.

C++26 just rolled out a glow-up for its text-printing tools: printing a blank line is finally simple, memory addresses can be shown without weird tricks, file paths are easier to print, and Windows users may at last be spared the cursed gibberish that appears when non-English file names get mangled. On paper, it’s one of those tidy “quality of life” upgrades developers usually beg for. In the comments, though? Absolute gremlin energy.

The biggest laughs came from the deadpan drive-by jokes. One commenter instantly turned std::print into a philosophy bit: should something called “print” even print? Another reader came in swinging at the article itself, calling code examples without visible output “just silly,” which is the kind of complaint that starts tiny and somehow becomes the whole party. In other words, the update may be about cleaner output, but the crowd wanted actual output on the screen before they’d clap.

There was also a more serious undercurrent: cautious excitement. People liked that formatting can now happen during compilation for some basic values, which could help catch mistakes earlier. But the hype hit a speed bump when readers noticed one glaring holdout: no floating-point numbers yet. So the mood was classic programmer drama—half “finally, thank you,” half “cool, but why is the obvious thing still missing?” Even the bit about Windows path text being fixed felt less like celebration and more like weary relief from people who’ve clearly seen some stuff.

Key Points

  • C++26 adds a zero-argument overload of `std::println` to print an empty line directly.
  • Pointer types can now be formatted directly in the formatting library, including lowercase and uppercase pointer output and padded formatting.
  • C++26 introduces `std::formatter<std::filesystem::path>` with support for unquoted output, debug escaped output, and generic path separators.
  • The new path formatter addresses Windows path encoding issues by transcoding native UTF-16 to UTF-8 instead of using the active code page.
  • Core formatting functions and related components become `constexpr` in C++26, but constant-evaluated formatting still excludes floating-point, chrono, and locale-aware formatting.

Hottest takes

"Surely std::print() shouldn't print anything?" — veltas
"Articles with code examples that doesn't show their output are just silly" — arunc
"This is great but it sounds like it doesn't work for floats yet" — randusername
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.