Parsing Numbers At Compile Time with C++17, C++23, and C++26 -- Bartlomiej Filipek
	
Thanks to the powerful constexpr keyword and many enhancements in recent C++ standards, we can now perform a lot of computations at compile time. In this text, we’ll explore several techniques for parsing integers, including the “naive” approach, C++23,from_chars,std::optional, std::expected, and even some upcoming features in C++26.
Parsing Numbers At Compile Time with C++17, C++23, and C++26
by Bartlomiej Filipek
From the article:
Why at compile time?
While it may sound like a theoretical experiment, since C++11 we can shift more and more computations to compile-time. Here are some key areas and examples where
constexprcan be beneficial:
- Building lookup tables
 - Working with embedded resources (like fonts or bitmaps)
 - Parsing configuration strings
 - Regular Expressions at compile time
 - Working with bit flags and bits
 - UB program verification (
 constexprcontext guarantees no UB in your code)- and many more… see Your New Mental Model of constexpr - Jason Turner - CppCon 2021 - YouTube or Lightning Talk: Memoizing Constexpr Programs - Chris Philip - CppCon 2021 - YouTube or Anything can be a Constexpr if you try hard enough - Zoe Carver - CppCon 2019 - YouTube
 Starting easy from C++17
Starting with C++17, we are now capable of writing complex
constexprfunctions. However, our ability to do so is still limited by the range of algorithms available in that context. Luckily, with the introduction ofstring_viewin that version of C++, there is no longer any need to work with “raw”const char*buffers.

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).
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:
A new episode of the series about SObjectizer and message passing: