Contributions

Article
The rule of zero, or six, is one of the advanced rules in modern C++. I wrote in my current book "C++ Core Guidelines Explained: Best Practices for Modern C++" about them. Today, I want to quote the relevant parts of my book in this post.
Article
Argument-Dependent Lookup (ADL), also known as Koenig Lookup, is a set of "magical" rules for the lookup of unqualified functions based on their function arguments.
Article
Partial Function Application is a technique in which a function binds a few of its arguments and returns a function taking fewer arguments. This technique is related to a technique used in functional languages called currying.
Article
An idiom is an architectural or design pattern implementation in a concrete programming language. Applying them is idiomatic for a programming language. Today. I write about the Copy-and-Swap Idiom in C++. This idiom gives you the strong exception safety guarantee.
Article
The Strategy Pattern is a behavioral design pattern from the book Design Patterns: Elements of Reusable Object-Oriented Software". It defines a family of algorithms and encapsulates them in objects.
Article
The Template Method is a behavioral design pattern. It defines a skeleton for an algorithm and is probably one of the most often used design patterns from the book "Design Patterns: Elements of Reusable Object-Oriented Software".
Article
The Visitor Pattern encapsulates an operation executed on an object hierarchy as an object and enables it to define new operations without changing the object hierarchy.
Article
The Observer Pattern is a behavioral pattern from the book "Design Patterns: Elements of Reusable Object-Oriented Software". It defines 1-to-n dependencies between objects so that changes to one object cause all dependent objects to be notified.
Article
The Proxy Pattern is probably the most influential design pattern for C++. The Proxy provides a placeholder for accessing another object.
Article
Today, I write about the Facade Pattern. The Facade Pattern is a structural pattern and has one purpose: to provide a simplified interface to any complex system.
Article
The Composite Pattern allows you to compose objects into tree structures and treat the individual object and composite objects uniformly.
Article
The Decorator Pattern's job is to extend an object with responsibilities dynamically. Let me, in today's post, dig deeper.
Article
The Bridge Pattern is a structural pattern. It decouples the interface from the implementation. In C++, a simplified version is often used: the Pimpl Idiom.
Article
The idea of the adapter pattern is straightforward: It converts the interface of a class into another interface.
Article
So far, I have discussed in my previous posts the Singleton Pattern, and its pros and cons. One question is still open: What alternatives for the Singleton Pattern are available? Today, I write about the Monostate Pattern and Dependency Injection.
Article
I introduced in my last post "The Singleton", the classical Singleton and the so-called Meyers Singleton. The Singleton Pattern is highly controversial. Let me, therefore, discuss in this post the pros and cons of the Singleton.
Article
The most controversial Design Pattern from the book "Design Patterns: Elements of Reusable Object-Oriented Software" is the Singleton Pattern. Let me introduce it before I discuss its pros and cons.
Article
In the last installment of this blog, I introduced the Factory Method: Creational Patterns: Factory Method 1. My implementation had two serious issues: slicing and ownership semantics. Today, I fix these issues.
Article
The classic book "Design Patterns: Elements of Reusable Object-Oriented Software" has 23 patterns. They are ordered by intent: creational, structural, and behavioral patterns. Today, I focus on the creational pattern Factory Method.
Article
An anti-pattern is a proven way to shoot yourself into your foot. The term anti-pattern was coined by Andrew Koenig, and it is pretty entertaining to read about them.
Article
Patterns don't live in isolation, they are in relation to each other. A relation can mean they are in contrast to each other, connected, build a sequence of patterns, build a repository of patter, or even a pattern language. Let's dive deeper into these relations.
Article
The classics "Design Patterns: Elements of Reusable Object-Oriented Software", and "Pattern-Oriented Software Architecture, Volume 1" use similar steps to present their pattern. Today, I will present this structure of a pattern.
Article
In my last post, I presented the classification of design patterns based on the seminal book "Design Patterns: Elements of Reusable Object-Oriented Software". Today, I present are more general classification of patterns based on the second seminal book "Pattern-Oriented Software Architecture, Volume 1".
Article
Patterns can be classified in various ways. The most prominent ones are the ones used in the books "Design Patterns: Elements of Reusable Object-Oriented Software" and "Pattern-Oriented Software Architecture, Volume 1".
Article
Most software developers assume that the book "Design Patterns: Elements of Reusable Object-Oriented Software", published in 1994, stands for the birth of patterns. No. The term was coined by Christopher Alexander in 1977.
Article
Before I write about patterns in my upcoming posts, I have to answer one question first. What are the advantages of patterns? As you may assume, I see many advantages, but I boil them down to three points: well-defined terminology, improved documentation, and learning from the best.
Article
Based on my last poll, "Which mentoring program should I implement next?" I recognized that there is a significant demand for writing about "Design Patterns and Architectural Patterns with C++". Today, I would like to present to you my plan for future posts.
Article
Thanks to C++23, constructing containers will become more convenient. Additionally, the ranges library got more new views.
Article
There are more reasons to prefer ranges library above the classical Standard Template Library. The ranges iterators support unified lookup rules and provide additional safety guarantees.
Article
The ranges library in C++20 supports sentinels. Sentinels stand for the end of a range and can be regarded as generalized end iterators.

Showing the last 30 only...