This curiosity was part of my CppCon Open Content talk in 2024, “Another Grab-bag of C++ Oddments”. The session highlighted C++ oddities, in the spirit of discovery through play. For reasons (TM), I want to be able to do this: Of note here: Some use cases I have in mind are things like logging, where… Continue reading Open Content at CppCon: One API for Types and Values
Category: C++
A Crossword for CppCon 2024 – Solutions
As a followup from last week, here’s an explanation of the CppCon crossword. I’m going to explain the construction process a bit, as well, so the solutions will be given in order of clue-writing, with some commentary on my thought process. Maybe a few people may find this interesting, I don’t know. Apologies for length.… Continue reading A Crossword for CppCon 2024 – Solutions
A Crossword for CppCon 2024
As well as being a C++ enthusiast, I’m a bit of a cruciverbalist. I do the Guardian cryptic every day (not in a particularly competitive time — I’d count sub-20 minutes as a good day), and sometimes others when I can. Like many Brits, I learned to do cryptic crosswords as a teenager. It’s true… Continue reading A Crossword for CppCon 2024
std::source_location is Broken
Everyone knows that the best way to get something done on the Internet is with an inflammatory title and a potentially incorrect contention, so here goes. What do you if you want to capture/log the filename of an assertion? Prior to C++20, you use good old __FILE__, which gives you a C-style array of chars.… Continue reading std::source_location is Broken
Monads are part of C++, and are in your code
For several reasons, I didn’t get a CppCon ticket this year, but since I live in the Denver metro area I did go on the Friday, which is free to attend. Herb’s closing keynote (Cpp2) was thought provoking. At one point though, he said, Think about the words and the ideas that we have been… Continue reading Monads are part of C++, and are in your code
C++23’s new function syntax
We’ve had a couple of ways to spell functions for a long time: And we’ve had a shortcut for that second one for a while, too: (Aside: notice where [[nodiscard]] is positioned, since C++23’s P2173, to apply to the lambda’s call operator.) All these ways to spell functions look the same at the call site.… Continue reading C++23’s new function syntax
constexpr Function Parameters
The Set-up In C++, this doesn’t work: The compiler complains, quite rightly: Despite the fact that twice_square is a constexpr function, its parameter x is not constexpr. We can’t use it in a static_assert, we can’t pass it to a template, we can’t call an immediate (consteval) function with it. So far, so well known.… Continue reading constexpr Function Parameters
Familiar Template Syntax IILEs
A lot has already been said in the blogosphere about the use of immediately-invoked lambda expressions (IILEs) for initialization, and they’re certainly very useful. In C++20, P0428 gives us “familiar template syntax” for lambdas. Now, instead of writing a regular generic lambda: we have the option to use “familiar template syntax” to name the template… Continue reading Familiar Template Syntax IILEs
Remember the Vasa! or, plus ça change, plus c’est la même chose
I’ve been programming in C++ for almost a quarter of a century now. I grew up, professionally, with C++, and in many ways, it grew up along with me. For someone who is used to C++, even used to recently-standardised C++, it’s hard not to feel apprehension when looking at C++20. Modules, coroutines, ranges, concepts… Continue reading Remember the Vasa! or, plus ça change, plus c’est la même chose
Thoughts on Modern C++ and Game Dev
TL;DR: The C++ committee isn’t following some sort of agenda to ignore the needs of game programmers, and “modern” C++ isn’t going to become undebuggable. — Over the past week there has been an ongoing conversation on Twitter about how many people — especially those in the games industry — feel that the current direction… Continue reading Thoughts on Modern C++ and Game Dev