<?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>Tue, 02 Jun 2026 00:00:00 +0000</lastBuildDate><item><title>More C++26 reflection at compile-time</title><link>https://andreasfertig.com/blog/2026/06/more-cpp26-reflection-at-compile-time/</link><description>&lt;p&gt;In today's post, I like touch-up on C++26's static reflection. In case you haven't seen, I wrote a first post &lt;a href="/blog/2025/08/cpp26-reflection-at-compile-time/"&gt;C++26 reflection at compile-time&lt;/a&gt; a while ago.&lt;/p&gt;
&lt;p&gt;One of the great things about reflection is that we can already explore the new feature since with Clang there is …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-06-02:/blog/2026/06/more-cpp26-reflection-at-compile-time/</guid><category>misc</category><category>C++</category></item><item><title>C++ Insights Episode 74: Why move requires noexcept in C++20</title><link>https://andreasfertig.com/blog/2026/05/cpp-insights-episode-74-why-move-requires-noexcept-in-cpp20/</link><description>&lt;p&gt;I published a new C++ insights episode: Why move requires noexcept in C++20.&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/d7CzCSrPp60' allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;In this episode, you'll learn why noexcept is crucial for move operations of a class.&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 May 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-05-20:/blog/2026/05/cpp-insights-episode-74-why-move-requires-noexcept-in-cpp20/</guid><category>misc</category><category>C++ Insights</category></item><item><title>Happy 8th anniversary C++ Insights</title><link>https://andreasfertig.com/blog/2026/05/happy-8th-anniversary-cpp-insights/</link><description>&lt;p&gt;This year, we celebrate the 8th anniversary of C++ Insights!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Thank you all for the wonderful years of support!&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;The current status&lt;/h2&gt;
&lt;p&gt;I've been a bit slower in updating C++ Insights to work with the latest Clang version. As a birthday gift I released the latest C++ Insights version which …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-05-13:/blog/2026/05/happy-8th-anniversary-cpp-insights/</guid><category>misc</category><category>C++ Insights</category><category>C++20</category></item><item><title>From Undefined to Defined: Using std::launder in C++</title><link>https://andreasfertig.com/blog/2026/05/from-undefined-to-defined-using-stdlaunder-in-cpp/</link><description>&lt;p&gt;In today's post, I will continue with the overall topics of the last two months. Today you'll learn when and where you need to apply C++17's &lt;code&gt;std::launder&lt;/code&gt; and where the difference to this utility is to &lt;code&gt;reinterpret_cast&lt;/code&gt; or &lt;code&gt;std::start_lifetime_as&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The fields where you can apply today's learning …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-05-05:/blog/2026/05/from-undefined-to-defined-using-stdlaunder-in-cpp/</guid><category>misc</category><category>C++</category></item><item><title>C++ Insights Episode 73: Things you can do effortlessly with C++20s concepts</title><link>https://andreasfertig.com/blog/2026/04/cpp-insights-episode-73-things-you-can-do-effortlessly-with-cpp20s-concepts/</link><description>&lt;p&gt;I published a new C++ insights episode: Things you can do effortlessly with C++20s concepts.&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/qjWo62dw-4s' allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;In this episode, you'll learn how C++20s concepts help you to write less code that's easier to maintain at the same time.&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 Apr 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-04-15:/blog/2026/04/cpp-insights-episode-73-things-you-can-do-effortlessly-with-cpp20s-concepts/</guid><category>misc</category><category>C++ Insights</category></item><item><title>Open-Enrollment classes in 2026</title><link>https://andreasfertig.com/blog/2026/04/open-enrollment-classes-in-2026/</link><description>&lt;p&gt;The year 2026 is already four months old. I hope you had a good start to this year. If you're interested in working with me at one of my public classes, here is what you need to know.&lt;/p&gt;
&lt;p&gt;I will give a one-day online workshop on &lt;a href="https://cpponline.uk/workshop/safe-and-efficient-cpp-for-embedded-environments/" target="_blank"&gt;Safe and Efficient C …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andreas Fertig</dc:creator><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>tag:andreasfertig.blog,2026-04-14:/blog/2026/04/open-enrollment-classes-in-2026/</guid><category>misc</category><category>Training</category></item><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></channel></rss>