As some of you may know, I'm writing a new book, this time for O'Reilly called "Introducing C++".
You can see it on the O'Reilly platform and leave comments: you can get a short free trial if you haven't paid for access.
As some of you may know, I'm writing a new book, this time for O'Reilly called "Introducing C++".
You can see it on the O'Reilly platform and leave comments: you can get a short free trial if you haven't paid for access.
I'm writing this up a while after the event, because life got in the way. I hosted the lightning talks again, which distracted me for some parts of the first two days. I also gave a talk on the first day. The third day allowed me to just sit back and listen.
We started with a keynote by Herb Sutter. He talked about "Three cool things in C++". The title was a way to decide last minute what those things would be.
Next, I went to Sandor's "Namespaces 101" talk. He's written a trip report too, which has more details on the talks than I'm going to manage here. He asked why I was in his talk, because it was aimed at beginners. I was interested to see how he introduced the topic. As I expected he covered some basics I had forgotten. It's worth reminding yourself of the basics once in a while. I took a picture of one slide, because it summarised important stuff:
"Hardening allows turning some instances of undefined behavior in the standard library into a guaranteed termination of the program."
See Open-std. He ended by discussing how and what to handle.
I spoke at ACCU 2025 this year. It took place in Bristol, but was hybrid, so I also gave an online poster presentation.
The schedule is here: https://accuconference.org/2025/schedule. The opening keynote was given by Anastasia Kazakova about The Next Coding Horizon: Proactive LLMs for Enhanced Productivity. She shared some stats about what tools etc programmers are using and told us some Jetbrains tools related to LLMs. Anastasia kept telling us to wait for more details at Daisy's keynote talk on Thursday.
I went to Heaps Don't Lie - Guidelines for Memory Allocation in C++ by Mathieu Ropert next, which talked through malloc being slow and some alternatives, which ended up being worryingly close to writing your own malloc! Meanwhile, Dom Davies filled a slot in the room next door, because the intended speaker couldn't make it. He played some music which almost drowned out Mathieu, who handled this very well.
![]() |
Mathieu pointing out allocations in code |
I took some time out after lunch to use the gym at the hotel, so missed the next slot. After that I went to A Very Small Language Model by Jez Higgins. He explained Markov chains: what happens next depends on the current state, not how you got to the current state. He used these to build a text generator, in JavaScript, using n-grams, starting with 2, and then increasing. This means using the last two words to predict the next word, based on a corpus (or document, like the Complete Works of Sherlock Holmes or Jane Austin). You tokenise the text (break into words), and build a lookup table of what follows 2-grams (or 3-grams etc). That gives you a probability of the next word, so you can probabilistically select what to generate next. Many silly sentences were generated.
![]() |
Jez explaining predictive text |
There were 10 lightning talks that evening. A speaker gets up to five minutes, and is kicked off stage if they go on for too long. You had to be there (but they may be online at some point).
![]() |
First session of lightning talks |
![]() |
Khalil starting his keynote |
After an in-depth start, I went to C++ Coroutines - Gods from the Machine by Phil Nash. I did attend a workshop he ran, taking a similar approach at CppOnSea a couple of years ago. He starts by adding co_return to a function and follows the compiler error messages from there to get a working coroutine. If you need help writing a coroutine, listen to his talks when it's online.
There was a poster session, and a student, Jacob Farrow, from Bradford University had his poster proposal accepted. His poster title was "Tracking Success: Enhancing Visual Tracking Skills in Children with Cerebral Visual Impairment through Interactive Digital Tools". I attempted to join, but couldn't find a quiet spot with enough WiFi coverage, so couldn't listen in. A shame. (I'm an industrial advisor at the Uni, so I shared the call of proposals with some CompSci lecturers, who persuaded the student to join in.) By this point, my brain had overloaded, so I skipped a session and went for a walk.
In the afternoon I went to How old am I in Seconds and other insights from the C++ chrono library by Nicolai M. Josuttis. He gave a great introduction to using std::chrono for time and durations in C++. He didn't really answer the questions posed in the title - he lied about his date of birth, allegedly, and pointed out the different leap seconds used by different clocks. Howard Hinnant has a blog about leap seconds: https://howardhinnant.github.io/date/d0355r4.html, if you can't wait for Nico's recording on YouTube. (The blog covers much more than leap seconds.)![]() |
Nico counting in seconds |
![]() |
More lightning talks (including me) |
![]() |
Daisy talking about agents |
![]() |
Steve ready to give his talk |
![]() |
Sam's cube image, which he could rotate to demo playing. The numbers are a way to represent the cube which his son helped invent. |
![]() |
One of Kevlin's slides: The past, present and future walk into a bar. It was a tense situation. |
![]() |
Matt summing up |
![]() |
Willow showing off how to play "put a toy in a box" |
There has been a new standard every three years, since C++11.This book didn't cover all the newer features: it gives just enough to help you catch up.How do you catch up?
- Write small projects
- Command line games are great for learning
- Focus on 1 or 2 features, and learn more than you intended
- Have fun!
If someone says "Do it this other way, it's better," ask why. Or say "Prove it." People are wrong, sometimes.