<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AndreasFertig.com</title><link>/</link><description/><atom:link href="https://andreasfertig.com/feed.xml" rel="self"/><lastBuildDate>Thu, 09 Apr 2026 00:00:00 +0000</lastBuildDate><item><title>iX Article: Neue Features in C++26</title><link>https://andreasfertig.com/blog/2026/04/ix-article-neue-features-in-cpp26/</link><description>&lt;p&gt;An article I wrote for the German iX magazine &lt;a href="https://www.heise.de/select/ix/2026/4/2528807050791246372" target="_blank"&gt;"Neue Features in C++26"&lt;/a&gt; is available in issue 2026/04. It is available as a printed edition as well as &lt;a href="https://www.heise.de/select/ix/2026/4" target="_blank"&gt;online&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="ix 2026/04" class="post-img-center" src="/img/ix-2026-04.png"&gt;&lt;/p&gt;
&lt;p&gt;I hope you find the article both interesting and inspiring.&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-04-09:/blog/2026/04/ix-article-neue-features-in-cpp26/</guid><category>misc</category><category>Publications</category></item><item><title>What reinterpret_cast doesn't do</title><link>https://andreasfertig.com/blog/2026/04/what-reinterpret_cast-doesnt-do/</link><description>&lt;p&gt;In today's post, I will explain one of C++'s biggest pitfalls: &lt;code&gt;reinterpret_cast&lt;/code&gt;. Another title for this post could be: &lt;em&gt;This is &lt;strong&gt;not&lt;/strong&gt; the cast you're looking for!&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;My motivation&lt;/h2&gt;
&lt;p&gt;My motivation for this blog post comes from multiple training classes I thought over the past several months and a …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-04-07:/blog/2026/04/what-reinterpret_cast-doesnt-do/</guid><category>misc</category><category>C++</category></item><item><title>C++ Insights Episode 72: Why you should never call a virtual member function in a constructor</title><link>https://andreasfertig.com/blog/2026/03/cpp-insights-episode-72-why-you-should-never-call-a-virtual-member-function-in-a-constructor/</link><description>&lt;p&gt;I published a new C++ insights episode: Why you should never call a virtual member function in a constructor.&lt;/p&gt;
&lt;p&gt;&lt;div class='embed-container' style='text-align: center'&gt;&lt;iframe width='560' height='315' allow='encrypted-media;' src='https://www.youtube-nocookie.com/embed/_ZvNJciCXeE' allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;In this episode, you'll learn by example why you should never call a virtual member function from a constructor.&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-03-18:/blog/2026/03/cpp-insights-episode-72-why-you-should-never-call-a-virtual-member-function-in-a-constructor/</guid><category>misc</category><category>C++ Insights</category></item><item><title>Best performance of a C++ singleton</title><link>https://andreasfertig.com/blog/2026/03/best-performance-of-a-cpp-singleton/</link><description>&lt;p&gt;In my Januray post, I focused on implementing a singleton correctly. This time I want to add performance into the mix and show you the best way to implement your singleton... or give you guidance to pick your best way.&lt;/p&gt;
&lt;h3&gt;Setting the scene&lt;/h3&gt;
&lt;p&gt;I'm using a display manager as an …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Tue, 03 Mar 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-03-03:/blog/2026/03/best-performance-of-a-cpp-singleton/</guid><category>misc</category><category>C++</category></item><item><title>C++ Insights Episode 71: C++23: multidimensional operator[]</title><link>https://andreasfertig.com/blog/2026/02/cpp-insights-episode-71-cpp23-multidimensional-operator/</link><description>&lt;p&gt;I published a new C++ insights episode: C++23: multidimensional operator[].&lt;/p&gt;
&lt;p&gt;&lt;div class='embed-container' style='text-align: center'&gt;&lt;iframe width='560' height='315' allow='encrypted-media;' src='https://www.youtube-nocookie.com/embed/_wIj799nLOc' allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;In this episode, you'll learn about the change to the operator[] in C++23.&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-02-18:/blog/2026/02/cpp-insights-episode-71-cpp23-multidimensional-operator/</guid><category>misc</category><category>C++ Insights</category></item><item><title>CppCon 2025 recording of my talk "Back to Basics: static, inline, const, and constexpr" is available</title><link>https://andreasfertig.com/blog/2026/02/cppcon-2025-recording-of-my-talk-back-to-basics-static-inline-const-and-constexpr-is-available/</link><description>&lt;p&gt;I'm pleased to announce that the recording of my talk at CppCon &lt;em&gt;Back to Basics: static, inline, const, and constexpr&lt;/em&gt; of my presentation is available &lt;a href="https://youtu.be/hLakx0KYiR0" target="_blank"&gt;YouTube&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;div class='embed-container' style='text-align: center'&gt;&lt;iframe width='560' height='315' allow='encrypted-media;' src='https://www.youtube-nocookie.com/embed/hLakx0KYiR0' allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;You can find the slides of this talk on my &lt;a href="/talks/"&gt;talks and training page&lt;/a&gt;. This site also contains details about my other public appearances …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Tue, 17 Feb 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-02-17:/blog/2026/02/cppcon-2025-recording-of-my-talk-back-to-basics-static-inline-const-and-constexpr-is-available/</guid><category>misc</category><category>Conference</category></item><item><title>The Reset trick</title><link>https://andreasfertig.com/blog/2026/02/the-reset-trick/</link><description>&lt;p&gt;My last month's post, &lt;a href="/blog/2026/01/singleton-done-right-in-cpp/"&gt;Singleton done right in C++&lt;/a&gt;, has triggered plenty of comments. I expected a few, but not that much. So thank you for keeping the conversation going.&lt;/p&gt;
&lt;p&gt;As I said in my previous post, this is not to advertise singletons at all. It is just if you …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Tue, 03 Feb 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-02-03:/blog/2026/02/the-reset-trick/</guid><category>misc</category><category>C++</category></item><item><title>C++ Insights Episode 70: Efficiently passing a std::source_location object</title><link>https://andreasfertig.com/blog/2026/01/cpp-insights-episode-70-efficiently-passing-a-stdsource_location-object/</link><description>&lt;p&gt;I published a new C++ insights episode: Efficiently passing a std::source_location object.&lt;/p&gt;
&lt;p&gt;&lt;div class='embed-container' style='text-align: center'&gt;&lt;iframe width='560' height='315' allow='encrypted-media;' src='https://www.youtube-nocookie.com/embed/-cGbf7hZOWU' allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;In this episode, I'll answer a question from a viewer about how to efficiently pass a std::source_location object.&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Wed, 21 Jan 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-01-21:/blog/2026/01/cpp-insights-episode-70-efficiently-passing-a-stdsource_location-object/</guid><category>misc</category><category>C++ Insights</category></item><item><title>Singleton done right in C++</title><link>https://andreasfertig.com/blog/2026/01/singleton-done-right-in-cpp/</link><description>&lt;p&gt;In today's post, I like to touch on a controversial topic: singletons. While I think it is best to have a codebase without singletons, the real-world shows me that singletons are often part of codebases.&lt;/p&gt;
&lt;p&gt;Since at least for the code that I see singletons exists, let's make sure you …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Tue, 06 Jan 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-01-06:/blog/2026/01/singleton-done-right-in-cpp/</guid><category>misc</category><category>C++</category></item><item><title>C++ Insights Episode 69: = default and uniform initialization - Best Practice Explained</title><link>https://andreasfertig.com/blog/2025/12/cpp-insights-episode-69-default-and-uniform-initialization-best-practice-explained/</link><description>&lt;p&gt;I published a new C++ insights episode: = default and uniform initialization - Best Practice Explained.&lt;/p&gt;
&lt;p&gt;&lt;div class='embed-container' style='text-align: center'&gt;&lt;iframe width='560' height='315' allow='encrypted-media;' src='https://www.youtube-nocookie.com/embed/gDKKZb4qASE' allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;In this episode, you'll learn a best practice using =default and uniform initialization.&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Wed, 17 Dec 2025 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2025-12-17:/blog/2025/12/cpp-insights-episode-69-default-and-uniform-initialization-best-practice-explained/</guid><category>misc</category><category>C++ Insights</category></item><item><title>C++20s std::source_location in action</title><link>https://andreasfertig.com/blog/2025/12/cpp20s-stdsource_location-in-action/</link><description>&lt;p&gt;In today's post, I want to address a question I'm getting occasionally when teaching a C++20 class. From the plenty of new features that we got with C++20, one sticks out as special: &lt;code&gt;std::source_location&lt;/code&gt;. Let's dive in to how this element is special and how to use …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Tue, 02 Dec 2025 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2025-12-02:/blog/2025/12/cpp20s-stdsource_location-in-action/</guid><category>misc</category><category>C++</category></item><item><title>C++ Insights Episode 68: C++20: Making constructors smarter with conditional explicit</title><link>https://andreasfertig.com/blog/2025/11/cpp-insights-episode-68-cpp20-making-constructors-smarter-with-conditional-explicit/</link><description>&lt;p&gt;I published a new C++ insights episode: C++20: Making constructors smarter with conditional explicit.&lt;/p&gt;
&lt;p&gt;&lt;div class='embed-container' style='text-align: center'&gt;&lt;iframe width='560' height='315' allow='encrypted-media;' src='https://www.youtube-nocookie.com/embed/Ly9rD6D5iew' allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;In this episode, you'll learn about the power of C++20's conditional explicit.&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Wed, 19 Nov 2025 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2025-11-19:/blog/2025/11/cpp-insights-episode-68-cpp20-making-constructors-smarter-with-conditional-explicit/</guid><category>misc</category><category>C++ Insights</category></item><item><title>C++20s concepts with a forward declared type</title><link>https://andreasfertig.com/blog/2025/11/cpp20s-concepts-with-a-forward-declared-type/</link><description>&lt;p&gt;In today's post, I would like to continue talking about forward declared or better incomplete types in C++.&lt;/p&gt;
&lt;p&gt;I discussed some scenarios in last months post &lt;a href="/blog/2025/10/forward-declaring-a-type-in-cpp-the-good-and-the-bad/"&gt;Forward declaring a type in C++: The good, and the bad&lt;/a&gt;. Today I like to add another flavor, C++20s concepts.&lt;/p&gt;
&lt;h2&gt;It depends&lt;/h2&gt;
&lt;p&gt;It's …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Tue, 04 Nov 2025 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2025-11-04:/blog/2025/11/cpp20s-concepts-with-a-forward-declared-type/</guid><category>misc</category><category>C++</category></item><item><title>Second Edition: Master Modern C++ - With Me as Your Personal Guide</title><link>https://andreasfertig.com/blog/2025/10/second-edition-master-modern-cpp-with-me-as-your-personal-guide/</link><description>&lt;p&gt;The first edition sold out fast — and after all the great feedback and success stories, I’m thrilled to open &lt;strong&gt;Edition 2&lt;/strong&gt; of my special bundle: &lt;em&gt;&lt;strong&gt;Programming with C++17 and C++20&lt;/strong&gt;&lt;/em&gt; self-study course &lt;strong&gt;plus four 30-minute 1:1 coaching sessions with me&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is not just another course …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Fri, 17 Oct 2025 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2025-10-17:/blog/2025/10/second-edition-master-modern-cpp-with-me-as-your-personal-guide/</guid><category>misc</category><category>training</category></item><item><title>C++ Insights Episode 67: C++23: Why if consteval can make your code better</title><link>https://andreasfertig.com/blog/2025/10/cpp-insights-episode-67-cpp23-why-if-consteval-can-make-your-code-better/</link><description>&lt;p&gt;I published a new C++ insights episode: C++23: Why if consteval can make your code better.&lt;/p&gt;
&lt;p&gt;&lt;div class='embed-container' style='text-align: center'&gt;&lt;iframe width='560' height='315' allow='encrypted-media;' src='https://www.youtube-nocookie.com/embed/9bHSiqXZhFI' allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;In this episode, you'll learn how C++23's if consteval helps you avoiding mistakes.&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2025-10-15:/blog/2025/10/cpp-insights-episode-67-cpp23-why-if-consteval-can-make-your-code-better/</guid><category>misc</category><category>C++ Insights</category></item><item><title>Forward declaring a type in C++: The good, and the bad</title><link>https://andreasfertig.com/blog/2025/10/forward-declaring-a-type-in-cpp-the-good-and-the-bad/</link><description>&lt;p&gt;In today's post, I would like to shed some light on the implications of forward declaring a type in C++.&lt;/p&gt;
&lt;p&gt;The most common pattern I know is when we want to hide the implementation of a class type, we &lt;em&gt;forward declare&lt;/em&gt; that class like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;
&lt;span class="normal"&gt;2&lt;/span&gt;
&lt;span class="normal"&gt;3&lt;/span&gt;
&lt;span class="normal"&gt;4&lt;/span&gt;
&lt;span class="normal"&gt;5 …&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Tue, 07 Oct 2025 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2025-10-07:/blog/2025/10/forward-declaring-a-type-in-cpp-the-good-and-the-bad/</guid><category>misc</category><category>C++</category></item><item><title>C++ Insights Episode 66: How C++23 handles temporary objects in range-based for-loops</title><link>https://andreasfertig.com/blog/2025/09/cpp-insights-episode-66-how-cpp23-handles-temporary-objects-in-range-based-for-loops/</link><description>&lt;p&gt;I published a new C++ insights episode: How C++23 handles temporary objects in range-based for-loops.&lt;/p&gt;
&lt;p&gt;&lt;div class='embed-container' style='text-align: center'&gt;&lt;iframe width='560' height='315' allow='encrypted-media;' src='https://www.youtube-nocookie.com/embed/ay8BnkWKKWA' allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;In this episode, you'll learn how C++23 reduces undefined behavior in range-based for-loops for you.&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Wed, 17 Sep 2025 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2025-09-17:/blog/2025/09/cpp-insights-episode-66-how-cpp23-handles-temporary-objects-in-range-based-for-loops/</guid><category>misc</category><category>C++ Insights</category></item><item><title>Efficient C++: The hidden compile-time cost of auto return types</title><link>https://andreasfertig.com/blog/2025/09/efficient-cpp-the-hidden-compile-time-cost-of-auto-return-types/</link><description>&lt;p&gt;In today's post, I would like to dive into writing efficient C++ code. As you probably know, one post will not cover this entire topic. For today's post, I like to focus on controlling your compile-times, picking one element out of the language: &lt;code&gt;auto&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I would like to start by …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Tue, 02 Sep 2025 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2025-09-02:/blog/2025/09/efficient-cpp-the-hidden-compile-time-cost-of-auto-return-types/</guid><category>misc</category><category>C++</category></item><item><title>C++ Insights Episode 65: C++26: Pack expansions for parameter packs</title><link>https://andreasfertig.com/blog/2025/08/cpp-insights-episode-65-cpp26-pack-expansions-for-parameter-packs/</link><description>&lt;p&gt;I published a new C++ insights episode: C++26: Pack expansions for parameter packs.&lt;/p&gt;
&lt;p&gt;&lt;div class='embed-container' style='text-align: center'&gt;&lt;iframe width='560' height='315' allow='encrypted-media;' src='https://www.youtube-nocookie.com/embed/dfQjKDPXPSk' allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;In this episode, you'll learn about the new ways you have in C++26 using parameter packs.&lt;/p&gt;
&lt;p&gt;Source code: https://cppinsights.io/s/a92bbe57   https://cppinsights.io/s/c6d94ea3&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2025-08-20:/blog/2025/08/cpp-insights-episode-65-cpp26-pack-expansions-for-parameter-packs/</guid><category>misc</category><category>C++ Insights</category></item><item><title>Master Modern C++ - With Me as Your Personal Guide</title><link>https://andreasfertig.com/blog/2025/08/master-modern-cpp-with-me-as-your-personal-guide/</link><description>&lt;p&gt;You asked for it, and I listened.&lt;/p&gt;
&lt;p&gt;This September, I’m offering a special bundle: my &lt;em&gt;&lt;strong&gt;Programming with C++17 and C++20&lt;/strong&gt;&lt;/em&gt; self-study course &lt;strong&gt;plus four 30-minute 1:1 coaching sessions with me&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This isn’t just a course. It’s a complete learning experience.&lt;/p&gt;
&lt;p&gt;You’ll work through …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Thu, 14 Aug 2025 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2025-08-14:/blog/2025/08/master-modern-cpp-with-me-as-your-personal-guide/</guid><category>misc</category><category>training</category></item></channel></rss>