Exception safety in the copy constructor: incrementing m_size only after each successful element copy Exception safety in the copy constructor: incrementing m_size only after each successful element copy

A Fixed Capacity Vector in C++: The Rule of Five

With the raw storage in place, we implement construction and destruction: default, copy, move, initializer-list construction, and the assignment operators — with a careful eye on exception safety.

June 29, 2026 · 8 min · Fabian Koehler
Sketch of the memory layout used to implement FixedCapacityVector Sketch of the memory layout used to implement FixedCapacityVector

A Fixed Capacity Vector in C++: Memory Layout

The first post in a series on implementing a FixedCapacityVector – a container that fills the gap between std::array and std::vector. We start with the raw storage: a byte buffer, alignment, and accessing it as typed memory.

June 23, 2026 · 6 min · Fabian Koehler
Six environment variables that can quietly reduce friction in CMake-based development workflows

6 Environment Variables That Quietly Improved My C++ Workflow

I was able to streamline my CMake-based development workflow quite a bit by defining just six environment variables.

May 20, 2026 · 4 min · Fabian Koehler
Code snippet of a free function using C++26 contracts

Test Driving C++26 Contracts with GCC 16.1

GCC 16.1 just shipped early support for C++26 contracts - making it the first major compiler to do so. I took it for a spin and wrote up my first impressions.

May 7, 2026 · 9 min · Fabian Koehler