C++23 likes to move it! -- Sandor Dargo
C++23 is going to bring us a few changes regarding move operations. It mostly means extended support in the standard library, but there is also one change directly in the language. Let’s start with that.
C++23 likes to move it!
by Sandor Dargo
From the article:
P2266R3 is a quite great proposal both in terms of its high-quality explanation and the amount of proposed changes in wording. I think if you’re interested in exploring a readable proposal, this might be the one.
Let me try to summarize it briefly.
Since the introduction of move semantics and rvalue references in C++11, we can return move-only types by value:
struct Widget { Widget(Widget&&); }; Widget one(Widget w) { return w; }C++14 extended this support so that even converting constructors accepting an rvalue type can be called to invoke an implicit move.
struct RRefTaker { RRefTaker(Widget&&); // here is the converting constructor }; RRefTaker two(Widget w) { return w; }As you can see, the two examples...

A new episode of the series about SObjectizer and message passing:
Thanks to the powerful
This article explores the concept of class invariants in C++ and their significance in maintaining code integrity and abstraction. It highlights the difference between struct and class definitions and discusses the role of class invariants in guaranteeing the correctness of class objects. The article also touches upon the trade-offs between strong and weak invariants and provides insights into when to define a new class with proper invariants.
A new episode of the series about SObjectizer and message passing:
In this post, Victor talks about bringing compile times of the {fmt} library on par with the C standard I/O library (stdio).
Seastar announces that now that C++23 is available, they will support C++23 and C++20 (dropping support for C++17) in accordance with their support policy
In this software troubleshooting case, a customer experienced program crashes, and a detailed analysis of the code revealed several issues. The primary problem stemmed from lazy initialization of a widget list, leading to inconsistent vector states and potential crashes. Additionally, a multithreading issue was identified, highlighting the importance of thread-safety mechanisms in code that can be accessed concurrently.
A new episode of the series about SObjectizer and message passing: