<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel>
    
    <title><![CDATA[Standard C++ | News]]></title>
    <link>http://isocpp.org/blog</link>
    <description></description>
    <dc:language>en</dc:language>
    <dc:rights>Copyright 2026</dc:rights>
    <admin:generatorAgent rdf:resource="https://expressionengine.com/" />
    

    <item>
      <title>GCC 16.1 released: C++26 reflection / contracts / safety hardening, C++20 by default, and more!</title>
      <link>https://isocpp.org//blog/2026/04/gcc-16.1</link>
      <guid>https://isocpp.org//blog/2026/04/gcc-16.1</guid>
      <description><![CDATA[<p>
	GCC 16.1 has been released! Lots of good C++26 material including reflection and contracts.</p>
<blockquote>
	<h3>
		<a href="https://gcc.gnu.org/gcc-16/changes.html#cxx">GCC 16 Release Series: Changes, New Features, and Fixes</a></h3>
</blockquote>
<p>
	From the announcement:</p>
<blockquote>
	<ul>
		<li>
			C++20 by default: [...]&nbsp;<em>N.B. C++20 modules support is still experimental and must be enabled by&nbsp;<a href="https://gcc.gnu.org/onlinedocs/gcc-16.1.0/gcc/C_002b_002b-Dialect-Options.html#index-fmodules">-fmodules</a>.</em></li>
	</ul>
	<ul>
		<li>
			Several C++26 features have been implemented:
			<ul>
				<li>
					<a href="https://wg21.link/P2996R13">P2996R13</a>, Reflection (<a href="https://gcc.gnu.org/PR120775">PR120775</a>, enabled by&nbsp;<code>-std=c++26 -freflection</code>)</li>
				<li>
					<a href="https://wg21.link/P3394R4">P3394R4</a>, Annotations for Reflection</li>
				<li>
					<a href="https://wg21.link/P3293R3">P3293R3</a>, Splicing a base class subobject</li>
				<li>
					<a href="https://wg21.link/P3096R12">P3096R12</a>, Function Parameter Reflection</li>
				<li>
					<a href="https://wg21.link/P3491R3">P3491R3</a>,&nbsp;<code>define_static_</code>{<code>string</code>,<code>object</code>,<code>array</code>} (<a href="https://gcc.gnu.org/PR120783">PR120783</a>)</li>
				<li>
					<a href="https://wg21.link/P3560R2">P3560R2</a>, Error Handling in Reflection</li>
				<li>
					<a href="https://wg21.link/P1306R5">P1306R5</a>, Expansion statements (<a href="https://gcc.gnu.org/PR120776">PR120776</a>)</li>
				<li>
					<a href="https://wg21.link/P2900R14">P2900R14</a>, Contracts (<a href="https://gcc.gnu.org/PR119061">PR119061</a>)</li>
				<li>
					<a href="https://wg21.link/P2795R5">P2795R5</a>, Erroneous behavior for uninitialized reads (<a href="https://gcc.gnu.org/PR114457">PR114457</a>)</li>
				<li>
					[...]</li>
			</ul>
		</li>
	</ul>
	<ul>
		<li>
			Improved experimental C++20 modules support:
			<ul>
				<li>
					New command line option&nbsp;<code>--compile-std-module</code>&nbsp;that conveniently builds the&nbsp;<code>&lt;bits/stdc++.h&gt;</code>&nbsp;header unit and the&nbsp;<code>std</code>&nbsp;and&nbsp;<code>std.compat</code>&nbsp;modules before compiling any source files explicitly specified on the command line.</li>
				<li>
					Whenever the&nbsp;<code>&lt;bits/stdc++.h&gt;</code>&nbsp;header unit has been built, GCC now transparently translates an&nbsp;<code>#include</code>&nbsp;of any importable standard library header into an&nbsp;<code>import</code>&nbsp;of&nbsp;<code>&lt;bits/stdc++.h&gt;</code>.</li>
				<li>
					Many reported bugs have been fixed, thanks to Nathaniel Shead.</li>
				<li>
					[...]</li>
			</ul>
		</li>
	</ul>
	<h4 id="libstdcxx">
		<a href="https://gcc.gnu.org/gcc-16/changes.html#libstdcxx">Runtime Library (libstdc++)</a></h4>
	<ul>
		<li>
			<code><font face="Consolas, Courier New, Lucida Console, monospace">[...]</font></code></li>
		<li>
			<code><font face="Consolas, Courier New, Lucida Console, monospace">Improved experimental support for [...]</font></code>
			<ul>
				<li>
					<code>std::mdspan</code>, thanks to Luc Grosheintz.</li>
				<li>
					<code>[...]</code></li>
				<li>
					<code>std::simd</code>.</li>
				<li>
					<code>std::inplace_vector</code>.</li>
				<li>
					<code>[...]</code></li>
			</ul>
		</li>
	</ul>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Product News, Standardization,]]></dc:subject>
      <pubDate>Thu, 30 Apr 2026 22:36:23 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Glaze 7.2 &#45; C++26 Reflection | YAML, CBOR, MessagePack, TOML and more</title>
      <link>https://isocpp.org//blog/2026/04/glaze-7.2-cpp26-reflection-yaml-cbor-messagepack-toml-and-more</link>
      <guid>https://isocpp.org//blog/2026/04/glaze-7.2-cpp26-reflection-yaml-cbor-messagepack-toml-and-more</guid>
      <description><![CDATA[<p>
	Glaze is a high-performance C++23 serialization library with compile-time reflection. It has grown to support many more formats and features, and in v7.2.0 C++26 Reflection support has been merged!</p>
<blockquote>
	<h3>
		<a href="https://www.reddit.com/r/cpp/comments/1rrq9e6/glaze_72_c26_reflection_yaml_cbor_messagepack/">Glaze 7.2 - C++26 Reflection | YAML, CBOR, MessagePack, TOML and more</a></h3>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Glaze now supports C++26 reflection with experimental GCC and Clang compilers. GCC 16 will soon be released with this support. When enabled, Glaze replaces the traditional&nbsp;<code style="font-size: 18px;">__PRETTY_FUNCTION__</code><span style="font-size: 18px;">&nbsp;parsing and structured binding tricks with proper compile-time reflection primitives (</span><code style="font-size: 18px;">std::meta</code><span style="font-size: 18px;">).</span></p>
	<p>
		The API doesn&#39;t change at all. You just get much more powerful automatic reflection that still works with Glaze overrides! Glaze was designed with automatic reflection in mind and still lets you customize reflection metadata using&nbsp;<code>glz::meta</code>&nbsp;on top of what&nbsp;<code>std::meta</code>&nbsp;provides via defaults.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Tue, 28 Apr 2026 22:25:57 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 The Wonderful World of Designing a USB Stack Using Modern C++ &#45;&#45; Madeline Schneider</title>
      <link>https://isocpp.org//blog/2026/04/cppcon-2025-the-wonderful-world-of-designing-a-usb-stack-using-modern-cpp-m</link>
      <guid>https://isocpp.org//blog/2026/04/cppcon-2025-the-wonderful-world-of-designing-a-usb-stack-using-modern-cpp-m</guid>
      <description><![CDATA[<p>
	<img alt="usbstack-schneider.png" src="https://isocpp.org/files/img/usbstack-schneider.png" style="width: 400px; margin: 10px; float: right;" />Registration is now open for CppCon 2026!&nbsp;The conference starts on September 12 and will be held&nbsp;<a href="https://cppcon.org/">in person in Aurora, CO</a>. To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting videos of some of the top-rated talks from last year&#39;s conference. Here&rsquo;s another CppCon talk video we hope you will enjoy &ndash; and why not&nbsp;<a href="https://cppcon.org/registration/"><strong>register today</strong></a><strong>&nbsp;for CppCon 2026!</strong></p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=Kbj_c-12yrA">The Wonderful World of Designing a USB Stack Using Modern C++</a></h3>
	<p>
		by Madeline Schneider</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Have you ever wondered how to design a library to abstract and manage complex communication protocols like USB? Have you ever wondered which parts of a protocol need to be hardware abstractions and which parts are hardware agnostic? Well you&rsquo;re in luck, my mentor and I have designed a USB stack from the ground up in modern C++! We found that the public offerings did not meet our needs. Our requirements are:</p>
	<ul>
		<li>
			Resource efficient</li>
		<li>
			Portable</li>
		<li>
			Modular</li>
		<li>
			Convenient to use</li>
		<li>
			Distributable via single pre-built binary using conan</li>
		<li>
			Without allocations after initialization</li>
	</ul>
	<p>
		In this talk you&rsquo;ll learn the basics of how USB works at the lowest level from a software perspective. You&rsquo;ll learn why malleability and freedom are so important for USB device development and how C++ makes such a library design easy to implement. Embark with me on a deep-dive into shaping a library where complexity runs wild. This talk will have lessons on library and API design in situations where the degrees of freedom are vast and all parts must magically fit together. By the end, you&rsquo;ll carry away practical patterns for taming vast design spaces&mdash;skills that apply to any ambitious library, far beyond USB.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand,]]></dc:subject>
      <pubDate>Mon, 27 Apr 2026 21:25:11 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Can Standard C++ Replace CUDA for GPU Acceleration? &#45;&#45; Elmar Westphal</title>
      <link>https://isocpp.org//blog/2026/04/cppcon-2025-can-standard-cpp-replace-cuda-for-gpu-acceleration-elmar-westph</link>
      <guid>https://isocpp.org//blog/2026/04/cppcon-2025-can-standard-cpp-replace-cuda-for-gpu-acceleration-elmar-westph</guid>
      <description><![CDATA[<p>
	<img alt="cuda-westphal.png" src="https://isocpp.org/files/img/cuda-westphal.png" style="width: 400px; margin: 10px; float: right;" />Registration is now open for CppCon 2026!&nbsp;The conference starts on September 12 and will be held&nbsp;<a href="https://cppcon.org/">in person in Aurora, CO</a>. To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting videos of some of the top-rated talks from last year&#39;s conference. Here&rsquo;s another CppCon talk video we hope you will enjoy &ndash; and why not&nbsp;<a href="https://cppcon.org/registration/"><strong>register today</strong></a><strong>&nbsp;for CppCon 2026!</strong></p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=EOvukoCyW7A">Can Standard C++ Replace CUDA for GPU Acceleration?</a></h3>
	<p>
		by Elmar Westphal</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		On top of the woes of multi-threaded programming itself, coding for GPUs used to be about dealing with kernels, separate memory domains, warps, blocks and other strange things. Later, life became easier and you could sprinkle in a bunch of pragmas, hoping that your favorite language extension would deal with all of this for you, and better memory model abstractions came up that were less painful to deal with. In recent years, new drivers (seemingly) levelled the boundaries between memory domains and new compilers allow us to deploy code to the GPU using standard C++ execution policies. The performance of the generated code is often similar to that of its CUDA-C++ counterpart. Of course there is no magic bullet to shoot at your (legacy) code and there are caveats, but come and see how using standard parallelism (also) for programming GPUs makes it a lot easier to write portable and more future-proof high-performance C++ code.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand,]]></dc:subject>
      <pubDate>Thu, 23 Apr 2026 21:23:33 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Behold the power of meta::substitute &#45;&#45; Barry Revzin</title>
      <link>https://isocpp.org//blog/2026/04/behold-the-power-of-metasubstitute-barry-revzin</link>
      <guid>https://isocpp.org//blog/2026/04/behold-the-power-of-metasubstitute-barry-revzin</guid>
      <description><![CDATA[<p>
	What if string formatting could do far more than just substitute values&mdash;and do it all at compile time? This deep dive explores how modern C++ features like reflection unlock powerful new possibilities for parsing, analyzing, and transforming format strings before your program even runs.</p>
<blockquote>
	<h3>
		<a href="https://brevzin.github.io/c++/2026/03/02/power-of-substitute/">Behold the power of meta::substitute</a></h3>
	<p>
		by Barry Revzin</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Over winter break, I started working on proposal for&nbsp;<a href="https://wg21.link/p3951">string interpolation</a>. It was a lot of fun to work through implementing, basically an hour a day during my daughter&rsquo;s nap time. The design itself is motivated by wanting to have a lot more functionality other than just formatting &mdash; and one of the examples in the paper was implementing an algorithm that does highlighting of the interpolations, such that:</p>
	<p>
		<img alt="revzin-codeeg.png" src="https://isocpp.org/files/img/revzin-codeeg.png" style="margin: 10px; float: left;" /></p>
	<p>
		&nbsp;</p>
	<p>
		&nbsp;</p>
	<p>
		&nbsp;</p>
	<p>
		would print this:</p>
	<blockquote>
		<p>
			x=<strong>5</strong>&nbsp;and y=<strong>*10*</strong>&nbsp;and z=<strong>hello</strong>!</p>
	</blockquote>
	<p>
		without doing any additional parsing work. I got the example from Vittorio Romeo&rsquo;s&nbsp;<a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1819r0.html#automated-coloring">original paper</a>.</p>
	<p>
		Now, when I wrote the paper, I considered this to be a simple example demonstrating something that was possible with the design I was proposing that was&nbsp;<em>not</em>&nbsp;possible with the&nbsp;<a href="https://wg21.link/p3412">other design</a>. I thought that because obviously you need the format string as a compile-time constant in order to parse it at compile time to get the information that you need.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Wed, 22 Apr 2026 19:50:46 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>2026 Annual C++ Developer Survey &amp;quot;Lite&amp;quot;</title>
      <link>https://isocpp.org//blog/2026/04/2026-annual-cpp-developer-survey-lite1</link>
      <guid>https://isocpp.org//blog/2026/04/2026-annual-cpp-developer-survey-lite1</guid>
      <description><![CDATA[<p>
	<img alt="cpp_logo.png" src="https://isocpp.org/files/img/cpp_logo.png" style="width: 250px; margin: 10px; float: right; height: 281px;" /></p>
<p>
	The annual global C++ developer survey is now open:</p>
<blockquote>
	<h2>
		<a href="https://standardcpp.typeform.com/2026-dev-survey">2026 Annual C++ Developer Survey "Lite"</a></h2>
</blockquote>
<p>
	Please share your feedback in this annual <strong>10-minute</strong> survey to help inform C++ standardization and C++ tool vendors. This is the biggest opportunity we all have each year to make our voices heard and help improve our industry and community!</p>
<p>
	A summary of the results, including aggregated highlights of common answers in the write-in responses, will be posted publicly here on isocpp.org and shared with the C++ standardization committee participants and C++ tool vendors to help inform C++ evolution and tooling.</p>
<p>
	The survey closes in one week.</p>
<p>
	<em><strong>Thank you </strong></em>for participating and helping to inform our committee and community.</p>]]></description>
      <dc:subject><![CDATA[News, Product News, Standardization,]]></dc:subject>
      <pubDate>Wed, 22 Apr 2026 00:59:01 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 C++: Some Assembly Required &#45;&#45; Matt Godbolt</title>
      <link>https://isocpp.org//blog/2026/04/cppcon-2025-cpp-some-assembly-required-matt-godbolt</link>
      <guid>https://isocpp.org//blog/2026/04/cppcon-2025-cpp-some-assembly-required-matt-godbolt</guid>
      <description><![CDATA[<p>
	<img alt="assembly-godbolt.png" src="https://isocpp.org/files/img/assembly-godbolt.png" style="width: 400px; margin: 10px; float: right;" />Registration is now open for CppCon 2026!&nbsp;The conference starts on September 12 and will be held&nbsp;<a href="https://cppcon.org/">in person in Aurora, CO</a>. To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting videos of some of the top-rated talks from last year&#39;s conference. Here&rsquo;s another CppCon talk video we hope you will enjoy &ndash; and why not&nbsp;<a href="https://cppcon.org/registration/"><strong>register today</strong></a><strong>&nbsp;for CppCon 2026!</strong></p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=zoYT7R94S3c">C++: Some Assembly Required</a></h3>
	<p>
		by Matt Godbolt</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Join Matt in exploring how the C++ ecosystem has evolved through the interplay of intentional design and emergent collaboration. Standards committees craft language features and compiler teams implement them, but something amazing happens in the spaces between: tools appear, communities form, and solutions emerge that nobody quite planned for. What started as individual developers solving their own problems has grown into an interconnected ecosystem that shapes how we all write C++.</p>
	<p>
		From documentation to testing, from build systems to package managers, we&#39;ll examine how the C++ community has assembled itself around shared pain points and accidental standards. Using examples and perhaps too many rainforest metaphors, this talk celebrates not just the language we&#39;ve built, but the organic ecosystem that&#39;s grown up around it. Come discover why C++&#39;s greatest strength might be that it&#39;s always required some assembly.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand,]]></dc:subject>
      <pubDate>Tue, 21 Apr 2026 21:13:30 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 How C++ Finally Beats Rust at JSON Serialization &#45;&#45; Lemire &amp;amp; Thiesen</title>
      <link>https://isocpp.org//blog/2026/04/cppcon-2025-how-cpp-finally-beats-rust-at-json-serialization-lemire-thiesen</link>
      <guid>https://isocpp.org//blog/2026/04/cppcon-2025-how-cpp-finally-beats-rust-at-json-serialization-lemire-thiesen</guid>
      <description><![CDATA[<p>
	<img alt="beatsrust-lemire.png" src="https://isocpp.org/files/img/beatsrust-lemire.png" style="width: 400px; margin: 10px; float: right;" />Registration is now open for CppCon 2026!&nbsp;The conference starts on September 12 and will be held&nbsp;<a href="https://cppcon.org/">in person in Aurora, CO</a>. To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting videos of some of the top-rated talks from last year&#39;s conference. Here&rsquo;s another CppCon talk video we hope you will enjoy &ndash; and why not&nbsp;<a href="https://cppcon.org/registration/"><strong>register today</strong></a><strong>&nbsp;for CppCon 2026!</strong></p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=Mcgk3CxHYMs">How C++ Finally Beats Rust at JSON Serialization</a></h3>
	<p>
		by Daniel Lemire &amp; Francisco Geiman Thiesen</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		JSON, or JavaScript Object Notation, has become a cornerstone for storing and exchanging data. Its appeal lies in its simplicity&mdash;human-readable text that elegantly captures structured data through attribute-value pairs and arrays: {"age": 5, "name": "Daniel", "toys": ["wooden dog", "little car"]}. JSON is intuitive yet powerful. But ingesting and producing JSON can turn into a performance choke point. In C++, it can be a tedious, error-prone task. Programmers wrestle with unexpected content, manually mapping data to and from native structures, all while striving for speed and safety.<br />
		<br />
		With languages like Java, C#, Zig, Rust, or Python, JSON serialization and deserialization typically requires far less work. In particular, Rust&#39;s serde library blends convenience with high speed. We wish for a C++ library to automatically handle JSON production and consumption, seamlessly tied to native data structures. It is not merely to simplify life for developers; it is also about crafting code that is both fast and solid, generated at compile time by a battle-tested library.<br />
		<br />
		Thankfully, C++ might soon be getting reflective metaprogramming (&nbsp; PR2996&nbsp; ). Leveraging the&nbsp; experimental Bloomberg LLVM fork&nbsp; with reflective metaprogramming, we have built a full-fledged implementation&mdash;complete with tests, benchmarks, and documentation. Our goal is to have production-ready code the moment mainstream compilers catch up. The results speak for themselves: we are parsing JSON directly into C++ structures at gigabytes per second, outpacing even mature heavyweights like Rust&#39;s serde. Better yet, the conversion between C++ data structures and JSON is fully automated, thanks to metaprogramming. It has the potential to be a leap forward for C++ in the data-driven age. Unfortunately, there are still problems and limitations: we present them and provide some solutions.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand, Standardization,]]></dc:subject>
      <pubDate>Fri, 17 Apr 2026 19:34:43 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Devirtualization and Static Polymorphism &#45;&#45; David Álvarez Rosa</title>
      <link>https://isocpp.org//blog/2026/04/devirtualization-and-static-polymorphism-david-alvarez-rosa</link>
      <guid>https://isocpp.org//blog/2026/04/devirtualization-and-static-polymorphism-david-alvarez-rosa</guid>
      <description><![CDATA[<p>
	<img alt="rosa-devirtualization.png" src="https://isocpp.org/files/img/rosa-devirtualization.png" style="width: 400px; margin: 10px; float: right;" />Ever wondered why your clean, object-oriented design sometimes slows things down? This piece breaks down how virtual dispatch impacts performance&mdash;and how techniques like devirtualization and static polymorphism can eliminate that overhead entirely.</p>
<blockquote>
	<h3>
		<a href="https://david.alvarezrosa.com/posts/devirtualization-and-static-polymorphism/">Devirtualization and Static Polymorphism</a></h3>
	<p>
		by David &Aacute;lvarez Rosa</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Ever wondered why your &ldquo;clean&rdquo; polymorphic design underperforms in benchmarks? Virtual dispatch enables polymorphism, but it comes with hidden overhead: pointer indirection, larger object layouts, and fewer inlining opportunities.</p>
	<p>
		Compilers do their best to devirtualize these calls, but it isn&rsquo;t always possible. On latency-sensitive paths, it&rsquo;s beneficial to manually replace dynamic dispatch with static polymorphism, so calls are resolved at compile time and the abstraction has effectively zero runtime cost.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Thu, 16 Apr 2026 19:42:23 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Why Every C++ Game Developer Should Learn SDL 3 Now &#45;&#45; Mike Shah</title>
      <link>https://isocpp.org//blog/2026/04/cppcon-2025-why-every-cpp-game-developer-should-learn-sdl-3-now-mike-shah</link>
      <guid>https://isocpp.org//blog/2026/04/cppcon-2025-why-every-cpp-game-developer-should-learn-sdl-3-now-mike-shah</guid>
      <description><![CDATA[<p>
	<img alt="gameindustry-shah.png" src="https://isocpp.org/files/img/gameindustry-shah.png" style="width: 400px; margin: 10px; float: right;" />Registration is now open for CppCon 2026!&nbsp;The conference starts on September 12 and will be held&nbsp;<a href="https://cppcon.org/">in person in Aurora, CO</a>. To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting videos of some of the top-rated talks from last year&#39;s conference. Here&rsquo;s another CppCon talk video we hope you will enjoy &ndash; and why not&nbsp;<a href="https://cppcon.org/registration/"><strong>register today</strong></a><strong>&nbsp;for CppCon 2026!</strong></p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=tV1giXd0-Us">Why Every C++ Game Developer Should Learn SDL 3 Now</a></h3>
	<p>
		by Mike Shah</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		The C++ programming language does not have a standard graphics library, However, there exists many popular graphics frameworks for cross-platform graphics. In this talk, I will provide an introduction to the Simple Directmedia Layer (SDL) library, which has at the start of 2025 released version 3. This library for several decades has been a standard in the games and graphics industry. Throughout this talk, I will show how to get started with the library, some more advanced examples (including compiling graphics applications to web), and then talk about what a standard graphics library could look like in C++, or if it is even necessary. I will also talk about the 3D GPU library in SDL3. Attendees will leave this talk ready to build multimedia / game applications and with an understanding on if SDL3 is the right tool for them.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand, Events,]]></dc:subject>
      <pubDate>Wed, 15 Apr 2026 19:31:45 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Announcement: cppreference.com update</title>
      <link>https://isocpp.org//blog/2026/04/announcement-cppreference.com-update</link>
      <guid>https://isocpp.org//blog/2026/04/announcement-cppreference.com-update</guid>
      <description><![CDATA[<p>
	<a href="https://cppreference.com/">cppreference.com</a>&nbsp;is the premier public reference site for documenting and tracking the C++ language. It is run by Nate Kohl, with the help of many volunteer wiki editors. I want to thank Nate and all the volunteers for making it such an enduringly valuable resource.</p>
<p>
	Like all software, the site requires maintenance. It has been in read-only mode for some time while Nate has been leading the work to migrate it to MediaWiki. Because the <a href="https://isocpp.org/about">Standard C++ Foundation</a>&#39;s web wizard, James Riordon, recently migrated the ISO C++ committee wiki (now also maintained by the Foundation) to MediaWiki, I asked Nate whether the Foundation and James could help. Nate accepted our offer, and thanks to Nate and James&#39;s work, cppreference is now almost ready to return to normal read-write operation.</p>
<p>
	To help keep the site running smoothly going forward, the Foundation plans to continue providing hosting and administrative support for the site&#39;s infrastructure, including future MediaWiki and related updates. That should let Nate stay focused on leading the site&#39;s content and coordinating the volunteer editors who keep cppreference current.</p>
<p>
	We expect the refreshed site, including support for all languages, to return to read-write mode later this month. Fingers crossed. My thanks again to Nate, James, and everyone who has helped make cppreference the indispensable reference it is today, and to everyone for their patience while this necessary maintenance has been underway.</p>
<p>
	Cheers,</p>
<p>
	Herb</p>
<p>
	&nbsp;</p>]]></description>
      <dc:subject><![CDATA[News,]]></dc:subject>
      <pubDate>Tue, 14 Apr 2026 22:36:46 +0000</pubDate>
      <dc:creator>Herb Sutter</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Implementing Your Own C++ Atomics &#45;&#45; Ben Saks</title>
      <link>https://isocpp.org//blog/2026/04/cppcon-2025-implementing-your-own-cpp-atomics-ben-saks</link>
      <guid>https://isocpp.org//blog/2026/04/cppcon-2025-implementing-your-own-cpp-atomics-ben-saks</guid>
      <description><![CDATA[<p>
	<img alt="atomics-saks.png" src="https://isocpp.org/files/img/atomics-saks.png" style="width: 400px; margin: 10px; float: right;" />Registration is now open for CppCon 2026!&nbsp;The conference starts on September 12 and will be held&nbsp;<a href="https://cppcon.org/">in person in Aurora, CO</a>. To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting videos of some of the top-rated talks from last year&#39;s conference. Here&rsquo;s another CppCon talk video we hope you will enjoy &ndash; and why not&nbsp;<a href="https://cppcon.org/registration/"><strong>register today</strong></a><strong>&nbsp;for CppCon 2026!</strong></p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=LtwQ7xZZIF4">Implementing Your Own C++ Atomics</a></h3>
	<p>
		by Ben Saks</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Atomic objects are extremely useful for concurrent programming. Unfortunately, some embedded toolchains like AVR-GCC omit portions of the C++ Standard Library, including headers like &#65308;atomic&#65310; .This makes it much harder to program concurrent software on these platforms, since many tutorials and open-source libraries assume Standard Library support. For example, these talks from past CppCons present lock-free data structures and algorithms that rely strongly on lock-free instantiations of std::atomic&#65308;T&#65310;:<br />
		<br />
		Single Producer Single Consumer Lock-free FIFO From the Ground Up &ndash; Charles Frasch &ndash; CppCon 2023<br />
		Introduction to Wait-free Algorithms in C++ Programming &ndash; Daniel Anderson &ndash; CppCon 2024<br />
		User API &amp; C++ Implementation of a Multi Producer, Multi Consumer, Lock Free, Atomic Queue &ndash; Erez Strauss &ndash; CppCon 2024<br />
		<br />
		This session will show you how to implement your own atomic types in the absence of library support. These atomic types can greatly expand the number of tutorials and open-source libraries available for you to use. A clear understanding of how atomic types are implemented will also help you use objects of those types more effectively on platforms that do provide native support.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand,]]></dc:subject>
      <pubDate>Tue, 14 Apr 2026 16:24:09 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Power of C++26 Reflection: Strong (opaque) type definitions &#45;&#45;  r/cpp</title>
      <link>https://isocpp.org//blog/2026/04/power-of-cpp26-reflection-strong-opaque-type-definitions-r-cpp</link>
      <guid>https://isocpp.org//blog/2026/04/power-of-cpp26-reflection-strong-opaque-type-definitions-r-cpp</guid>
      <description><![CDATA[<p>
	Inspired by a similar previous thread showcasing cool uses for C++26 reflection.</p>
<blockquote>
	<h3>
		<a href="https://www.reddit.com/r/cpp/comments/1rgo4s9/power_of_c26_reflection_strong_opaque_type/">Power of C++26 Reflection: Strong (opaque) type definitions&nbsp;</a></h3>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		With reflection, you can easily create "opaque" type definitions, i.e "strong types". It works by having an inner value stored, and wrapping over all public member functions.</p>
	<p>
		Note: I am using queue_injection { ... } with the EDG experimental reflection, which afaik wasn&#39;t actually integrated into the C++26 standard, but without it you would simply need two build stages for codegen. This is also just a proof of concept, some features aren&#39;t fully developed (e.g aggregate initialization)</p>
	<pre>
struct Item { /* ... */ }; // name, price as methods&#10;&#10;struct FoodItem;&#10;struct BookItem;&#10;struct MovieItem;&#10;&#10;consteval { &#10;    make_strong_typedef(^^FoodItem, ^^Item); &#10;    make_strong_typedef(^^BookItem, ^^Item); &#10;    make_strong_typedef(^^MovieItem, ^^Item); &#10;}&#10;&#10;// Fully distinct types&#10;void display(FoodItem &amp;i) {&#10;    std::cout &lt;&lt; "Food: " &lt;&lt; i.name() &lt;&lt; ", " &lt;&lt; i.price() &lt;&lt; std::endl;&#10;}&#10;void display(BookItem &amp;i) {&#10;    std::cout &lt;&lt; "Book: " &lt;&lt; i.name() &lt;&lt; ", " &lt;&lt; i.price() &lt;&lt; std::endl;&#10;}&#10;&#10;int main() {&#10;    FoodItem fi("apple", 10); // works if Item constructor isn&#39;t marked explicit&#10;    FoodItem fi_conversion(Item{"chocolate", 5}); // otherwise&#10;    BookItem bi("the art of war", 20);&#10;    MovieItem mi("interstellar", 25);&#10;&#10;    display(fi);&#10;    display(bi);&#10;    // display(Item{"hello", 1}); // incorrect, missing display(Item&amp;) function&#10;    // display(mi); // incorrect, missing display(MovieItem&amp;) function&#10;}</pre>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Thu, 09 Apr 2026 21:36:20 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Back to Basics: Custom Allocators Explained &#45; From Basics to Advanced &#45;&#45; Kevin Carpenter</title>
      <link>https://isocpp.org//blog/2026/04/cppcon-2025-back-to-basics-custom-allocators-explained-from-basics-to-advan</link>
      <guid>https://isocpp.org//blog/2026/04/cppcon-2025-back-to-basics-custom-allocators-explained-from-basics-to-advan</guid>
      <description><![CDATA[<p>
	<img alt="Custom_Allocators_carpenter.png" src="https://isocpp.org/files/img/Custom_Allocators_carpenter.png" style="width: 400px; margin: 10px; float: right;" />Registration is now open for CppCon 2026!&nbsp;The conference starts on September 12 and will be held&nbsp;<a href="https://cppcon.org/">in person in Aurora, CO</a>. To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting videos of some of the top-rated talks from last year&#39;s conference. Here&rsquo;s another CppCon talk video we hope you will enjoy &ndash; and why not&nbsp;<a href="https://cppcon.org/registration/"><strong>register today</strong></a><strong>&nbsp;for CppCon 2026!</strong></p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=RpD-0oqGEzE">Back to Basics: Custom Allocators Explained - From Basics to Advanced</a></h3>
	<p>
		by Kevin Carpenter</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Effective memory management is crucial for building efficient and reliable C++ applications. Custom memory allocators provide a powerful tool for optimizing memory usage, reducing fragmentation, and improving performance. This talk will explore the intricacies of memory allocation in C++, from the basics of dynamic memory management to the implementation of custom allocators. Attendees will gain insights into the standard allocator model, techniques for designing custom allocators, and practical examples of their use in real-world applications.<br />
		<br />
		Join us to unlock the full potential of memory management in your C++ projects.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand,]]></dc:subject>
      <pubDate>Tue, 07 Apr 2026 17:17:59 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Cache Me Maybe: The Performance Secret Every C++ Developer Needs &#45;&#45; Michelle D&apos;Souza</title>
      <link>https://isocpp.org//blog/2026/04/cppcon-2025-cache-me-maybe-the-performance-secret-every-cpp-developer-needs</link>
      <guid>https://isocpp.org//blog/2026/04/cppcon-2025-cache-me-maybe-the-performance-secret-every-cpp-developer-needs</guid>
      <description><![CDATA[<p>
	<img alt="Cache_Me_Maybe_dsouza.png" src="https://isocpp.org/files/img/Cache_Me_Maybe_dsouza.png" style="width: 400px; margin: 10px; float: right;" />Registration is now open for CppCon 2026!&nbsp;The conference starts on September 12 and will be held&nbsp;<a href="https://cppcon.org/">in person in Aurora, CO</a>. To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting videos of some of the top-rated talks from last year&#39;s conference. Here&rsquo;s another CppCon talk video we hope you will enjoy &ndash; and why not&nbsp;<a href="https://cppcon.org/registration/"><strong>register today</strong></a><strong>&nbsp;for CppCon 2026!</strong></p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=VhKq0nzPTh0">Cache Me Maybe: The Performance Secret Every C++ Developer Needs</a></h3>
	<p>
		by Michelle D&#39;Souza</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Calling all code detectives! Grab your trench coats and magnifying glasses ... it&#39;s time to crack the case of sluggish C++ performance. In this thrilling investigation, we&#39;ll uncover the hidden world of your computer&#39;s built-in cache and how to harness it to turbocharge your code.<br />
		<br />
		We&#39;ll comb through the fundamentals of caches like seasoned sleuths, uncover clues on optimizing access patterns, and interrogate suspects like false sharing and cache unfriendly data structures. We will also examine benchmark evidence based on real-world production code, exposing how each technique delivers the goods.<br />
		<br />
		By the end of this mission, you&#39;ll be armed with a detective&#39;s toolkit of cache savvy strategies, ready to solve cross-platform performance mysteries and bring blazing fast code to justice. Cache you at this session, maybe!</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand,]]></dc:subject>
      <pubDate>Fri, 03 Apr 2026 17:15:42 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>std::vector — Four Mechanisms Behind Every push_back() &#45;&#45; Gracjan Olbinski</title>
      <link>https://isocpp.org//blog/2026/04/stdvector-four-mechanisms-behind-every-push_back-gracjan-olbinski</link>
      <guid>https://isocpp.org//blog/2026/04/stdvector-four-mechanisms-behind-every-push_back-gracjan-olbinski</guid>
      <description><![CDATA[<p>
	A walkthrough of four mechanisms working behind every push_back() call &mdash; exponential growth and amortized O(1), the growth factor&#39;s effect on memory reuse, cache performance from contiguity, and the silent noexcept trap in move semantics during reallocation.</p>
<blockquote>
	<h3>
		<a href="https://golbinski.org/blog/std-vector-push-back/">std::vector &mdash; Four Mechanisms Behind Every push_back()</a></h3>
	<p>
		by&nbsp;Gracjan Olbinski</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		"You call push_back() a thousand times. The vector reallocates about ten. Behind that simple interface, four mechanisms are working together &mdash; each one invisible during normal use, each one shaping your performance in ways that push_back() will never tell you about."</p>
</blockquote>
<p>
	&nbsp;</p>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Thu, 02 Apr 2026 23:48:28 +0000</pubDate>
      <dc:creator>Gracjan Olbinski</dc:creator>
    </item>

    <item>
      <title>CppCon 25 Matrix Multiplication Deep Dive || Cache Blocking, SIMD &amp;amp; Parallelization &#45;&#45; Aliaksei Sala</title>
      <link>https://isocpp.org//blog/2026/03/cppcon-25-matrix-multiplication-deep-dive-cache-blocking-simd-parallelizati</link>
      <guid>https://isocpp.org//blog/2026/03/cppcon-25-matrix-multiplication-deep-dive-cache-blocking-simd-parallelizati</guid>
      <description><![CDATA[<p>
	<img alt="matrix_multiplication_Aliaksei_Sala.png" src="https://isocpp.org/files/img/matrix_multiplication_Aliaksei_Sala.png" style="width: 400px; margin: 10px; float: right;" />Registration is now open for CppCon 2026!&nbsp;The conference starts on September 12 and will be held&nbsp;<a href="https://cppcon.org/">in person in Aurora, CO</a>. To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting videos of some of the top-rated talks from last year&#39;s conference. Here&rsquo;s another CppCon talk video we hope you will enjoy &ndash; and why not&nbsp;<a href="https://cppcon.org/registration/"><strong>register today</strong></a><strong>&nbsp;for CppCon 2026!</strong></p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=GHctcSBd6Z4">Matrix Multiplication Deep Dive || Cache Blocking, SIMD &amp; Parallelization</a></h3>
	<p>
		by Aliaksei Sala</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Matrix multiplication is a fundamental operation in scientific computing, game development, AI, and numerous high-performance applications. While its mathematical definition is simple, achieving optimal performance in C++ is far from trivial.<br />
		<br />
		In this talk, we will explore different optimization techniques for matrix multiplication, from naive implementations to highly tuned versions leveraging modern hardware features. We will cover key performance-enhancing strategies such as loop unrolling, cache blocking, SIMD vectorization, parallelization using threads and more. Through benchmarking and profiling, we will measure the real impact of these optimizations.<br />
		<br />
		By the end of this session, attendees will gain insights into two critical questions:<br />
		<br />
		How hard is it to implement an optimized matrix multiplication in C++? How effective is C++ for achieving peak performance in this task?<br />
		<br />
		This talk is suitable for developers interested in performance optimization, computational efficiency, and modern C++ techniques for numerical computing.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand,]]></dc:subject>
      <pubDate>Tue, 31 Mar 2026 17:11:56 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>The hidden compile&#45;time cost of C++26 reflection &#45;&#45; Vittorio Romeo</title>
      <link>https://isocpp.org//blog/2026/03/the-hidden-compile-time-cost-of-cpp26-reflection-vittorio-romeo</link>
      <guid>https://isocpp.org//blog/2026/03/the-hidden-compile-time-cost-of-cpp26-reflection-vittorio-romeo</guid>
      <description><![CDATA[<p>
	How much does C++26 Reflection actually cost your build?</p>
<p>
	In this article, we&#39;ll perform some early compilation time benchmarks of one of the most awaited C++26 features.</p>
<blockquote>
	<h3>
		<a href="https://vittorioromeo.com/index/blog/refl_compiletime.html"><strong>The hidden compile-time cost of C++26 reflection</strong></a></h3>
	<p>
		by Vittorio Romeo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Fast compilation times are extremely valuable to keep iteration times low, productivity and motivation high, and to quickly see the impact of your changes.</p>
	<p>
		I would love to see a world where C++26 reflection is as close as possible to a lightweight language feature [...]</p>
	<p>
		So, I decided to take some early measurements.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Tue, 31 Mar 2026 01:19:29 +0000</pubDate>
      <dc:creator>Vittorio Romeo</dc:creator>
    </item>

    <item>
      <title>Stop Choosing: Get C++ Performance in Python Algos with C++26 &#45;&#45; Richard Hickling</title>
      <link>https://isocpp.org//blog/2026/03/stop-choosing-get-cpp-performance-in-python-algos-with-c26-richard-hickling</link>
      <guid>https://isocpp.org//blog/2026/03/stop-choosing-get-cpp-performance-in-python-algos-with-c26-richard-hickling</guid>
      <description><![CDATA[<p>
	<img alt="merton-bot.png" src="https://isocpp.org/files/img/merton-bot.png" style="width: 400px; margin: 10px; float: right;" />In algorithmic trading, the Python-vs-C++ debate is usually framed as flexibility versus speed &mdash; rapid strategy development on one side, ultra-low-latency execution on the other. But with C++26 reflection, that trade-off starts to disappear, making it possible to generate Python bindings automatically while keeping the core logic running at native C++ performance.</p>
<blockquote>
	<h3>
		<a href="https://profitview.net/blog/cpp26-reflection-python-algo-trading">Stop Choosing: Get C++ Performance in Python Algos with C++26</a></h3>
	<p>
		by Richard Hickling</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		The &ldquo;religious war&rdquo; between Python and C++ in algorithmic trading usually boils down to a single trade-off:&nbsp;Python&nbsp;is faster for getting ideas to market, while&nbsp;C++&nbsp;is faster for getting orders into the book.</p>
	<p>
		But why choose? With the advent of&nbsp;C++26 Reflection, you can now have the flexibility of a Python-based strategy without the performance penalty of slow loops.</p>
	<p id="bring-in-c-rapidly-how-reflection-works">
		<strong>Bring in C++ Rapidly: How Reflection Works</strong></p>
	<p>
		The biggest hurdle in hybrid trading systems has always been the &ldquo;bridge.&rdquo; Traditionally, if you wrote a complex pricer in C++, you had to manually write &ldquo;boilerplate&rdquo; code to tell Python how to talk to it. If you added a new function, you had to update the bridge. It was tedious and error-prone.</p>
	<p>
		Reflection&nbsp;changes the game by allowing the code to &ldquo;look in the mirror&rdquo;. Instead of you manually describing your C++ functions to Python, the compiler does it for you. It programmatically inspects your classes and generates the bindings automatically.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Fri, 27 Mar 2026 19:11:17 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Practical Reflection With C++26 &#45;&#45; Barry Revzin</title>
      <link>https://isocpp.org//blog/2026/03/cppcon-2025-practical-reflection-with-cpp26-barry-revzin</link>
      <guid>https://isocpp.org//blog/2026/03/cppcon-2025-practical-reflection-with-cpp26-barry-revzin</guid>
      <description><![CDATA[<p>
	<img alt="practical_reflection_revzin.png" src="https://isocpp.org/files/img/practical_reflection_revzin.png" style="width: 400px; margin: 10px; float: right;" />Registration is now open for CppCon 2026!&nbsp;The conference starts on September 12 and will be held&nbsp;<a href="https://cppcon.org/">in person in Aurora, CO</a>. To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting videos of some of the top-rated talks from last year&#39;s conference. Here&rsquo;s another CppCon talk video we hope you will enjoy &ndash; and why not&nbsp;<a href="https://cppcon.org/registration/"><strong>register today</strong></a><strong>&nbsp;for CppCon 2026!</strong></p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=ZX_z6wzEOG0">Practical Reflection With C++26</a></h3>
	<p>
		by Barry Revzin</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		With the adoption of Reflection for C++26, the landscape of what is possible has shifted. This talk will focus on implementing Struct-of-Arrays for an arbitrary aggregate, but will also take some detours to cover some techniques that will prove useful for solving a wide range of problems.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand,]]></dc:subject>
      <pubDate>Thu, 26 Mar 2026 17:08:59 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>A Brief History of Bjarne Stroustrup, the Creator of C++ &#45;&#45; CultRepo</title>
      <link>https://isocpp.org//blog/2026/03/a-brief-history-of-bjarne-stroustrup-the-creator-of-cpp-cultrepo1</link>
      <guid>https://isocpp.org//blog/2026/03/a-brief-history-of-bjarne-stroustrup-the-creator-of-cpp-cultrepo1</guid>
      <description><![CDATA[<p>
	In this portrait, we meet Bjarne Stroustrup where we talk about his childhood, his accidental entry into computer science (what is "datologi" anyway?), and the ideas that shaped one of the most influential programming languages ever made -- among many, many other things... like how pronouncing his last name involves a potato.</p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=uDtvEsv730Y">A Brief History of Bjarne Stroustrup, the Creator of C++</a></h3>
	<p>
		by CultRepo</p>
</blockquote>
<p>
	Watch now:</p>
<blockquote>
	<p>
		&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/uDtvEsv730Y?si=QD_WmemwpsAfNsVI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand, Training,]]></dc:subject>
      <pubDate>Wed, 25 Mar 2026 19:07:51 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Announcing Meeting C++ 2026</title>
      <link>https://isocpp.org//blog/2026/03/announcing-meeting-cpp-2026</link>
      <guid>https://isocpp.org//blog/2026/03/announcing-meeting-cpp-2026</guid>
      <description><![CDATA[<p>
	This years Meeting C++ conference is special, as its the 15th conference in total that Meeting C++ has organized, and its also the 5th time the event is hybrid!</p>
<blockquote>
	<h2>
		<a href="https://meetingcpp.com/meetingcpp/news/items/Announcing-Meeting-Cpp-2026-.html">Announcing Meeting C++ 2026</a></h2>
	<p>
		by Jens Weller</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		We&#39;ll be meeting from the 26th - 28th November in Berlin! You have the unique chance to spend the 1st advent in Berlin with C++ and Christmas Markets open!</p>
	<p>
		With Mateusz Pusz and Kate Gregory I&#39;ve chosen two well known speakers for the keynotes this year. Mateusz is well known for his units library, which currently also is proposed for the standard. It is also an important contribution to making C++ more safe and secure, the big topic of last year. Then Kate Gregory will be visiting us in Berlin again, she is known for her ability to create great talks around technical and social aspects in our daily lives as devs. You might remember her from giving a keynote in 2017, or speaking about the aging programmer two years ago.</p>
	<p>
		For the 15th time Meeting C++ will organize a great event for 3 days filled with lots of content about C++, like last year the plan is to host 3 tracks in parallel in Berlin, with an optional 4th track. The 4th track will be unlocked either by sponsorships or ticket sales. You can be a part of this great C++ event by attending onsite and online. There is already great news for onsite attendees: Hudson River Trading is again this years t-shirt sponsor, a great and unique Meeting C++ 2026 t-shirt is an exclusive perk for onsite attendees!</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Wed, 25 Mar 2026 17:02:19 +0000</pubDate>
      <dc:creator>Meeting C++</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Threads vs Coroutines: Why C++ Has Two Concurrency Models &#45;&#45; Conor Spilsbury</title>
      <link>https://isocpp.org//blog/2026/03/cppcon-2025-threads-vs-coroutines-why-cpp-has-two-concurrency-models-conor</link>
      <guid>https://isocpp.org//blog/2026/03/cppcon-2025-threads-vs-coroutines-why-cpp-has-two-concurrency-models-conor</guid>
      <description><![CDATA[<p>
	<img alt="Threads_vs_coroutines_Conor_Spilsbury.png" src="https://isocpp.org/files/img/Threads_vs_coroutines_Conor_Spilsbury.png" style="width: 400px; margin: 10px; float: right;" />Registration is now open for CppCon 2026!&nbsp;The conference starts on September 12 and will be held&nbsp;<a href="https://cppcon.org/">in person in Aurora, CO</a>. To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting videos of some of the top-rated talks from last year&#39;s conference. Here&rsquo;s another CppCon talk video we hope you will enjoy &ndash; and why not&nbsp;<a href="https://cppcon.org/registration/"><strong>register today</strong></a><strong>&nbsp;for CppCon 2026!</strong></p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=txffplpsSzg">Threads vs Coroutines: Why C++ Has Two Concurrency Models</a></h3>
	<p>
		by Conor Spilsbury</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		The C++11 standard introduced a powerful set of tools for concurrency such as threads, mutexes, condition variables, and futures. More recently, C++20 introduced another powerful but fundamentally different concurrency abstraction in the form of coroutines. But coroutines are not just an evolution or a replacement for threads. Instead, they each solve different problems in different ways. Choosing the right tool for the job requires understanding how each works under the hood and where they shine. This talk will help build that intuition by looking at how each interacts with the operating system and hardware which will help make better decisions when choosing which to use.<br />
		<br />
		We&#39;ll explore how threads and synchronization primitives work at the operating-system and hardware level, from thread creation and scheduling to where context switching and synchronization introduce performance costs. We&rsquo;ll then contrast this to the coroutine model introduced in C++20 which takes a fundamentally different approach by using a cooperative model based on the suspension and resumption of work.<br />
		<br />
		Given this understanding, we&rsquo;ll finish by applying this intuition to a set of real-world scenarios to identify whether threads or coroutines are a better fit for the problem at hand.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand,]]></dc:subject>
      <pubDate>Mon, 23 Mar 2026 17:05:00 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>C++26: std::is_within_lifetime &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2026/03/cpp26-stdis-within-lifetime-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2026/03/cpp26-stdis-within-lifetime-sandor-dargo</guid>
      <description><![CDATA[<p>
	<img alt="SANDOR_DARGO_ROUND.JPG" src="https://isocpp.org/files/img/SANDOR_DARGO_ROUND.JPG" style="width: 200px; margin: 10px; float: right; height: 204px;" />When I first came across <code data-end="50" data-start="25">std::is_within_lifetime</code>, I expected another small type-traits utility &mdash; not a feature tied to checking whether a union alternative is active. But once you look closer, this seemingly narrow addition turns out to solve a surprisingly fundamental problem in constant evaluation.</p>
<blockquote>
	<h3>
		<a href="https://www.sandordargo.com/blog/2026/02/18/cpp26-std_is_within_lifetime">C++26: std::is_within_lifetime</a></h3>
	<p>
		by Sandor Dargo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		When I was looking for the next topic for my posts, my eyes stopped on&nbsp;<code>std::is_within_lifetime</code>. Dealing with lifetime issues is a quite common source of bugs, after all. Then&nbsp;<a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2641r4.html">I clicked on the link</a>&nbsp;and I read&nbsp;<em>Checking if a union alternative is active</em>. I scratched my head. Is the link correct?</p>
	<p>
		It is &mdash; and it totally makes sense.</p>
	<p>
		Let&rsquo;s get into the details and first check what&nbsp;<a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2641r4.html">P2641R4</a>&nbsp;is about.</p>
	<p id="what-does-stdis_within_lifetime-do">
		<strong>What does&nbsp;<code>std::is_within_lifetime</code>&nbsp;do?</strong></p>
	<p>
		C++26 adds&nbsp;<code>bool std::is_within_lifetime(const T* p)</code>&nbsp;to the&nbsp;<code>&lt;type_traits&gt;</code>&nbsp;header. This function checks whether&nbsp;<code>p</code>&nbsp;points to an object that is currently within its lifetime during constant evaluation.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Thu, 19 Mar 2026 19:03:59 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 More Speed &amp;amp; Simplicity: Practical Data&#45;Oriented Design in C++ &#45;&#45; Vittorio Romeo</title>
      <link>https://isocpp.org//blog/2026/03/cppcon-2025-more-speed-simplicity-practical-data-oriented-design-in-cpp-vit</link>
      <guid>https://isocpp.org//blog/2026/03/cppcon-2025-more-speed-simplicity-practical-data-oriented-design-in-cpp-vit</guid>
      <description><![CDATA[<p>
	<img alt="More_Speed_Vittorio_Romeo.png" src="https://isocpp.org/files/img/More_Speed_Vittorio_Romeo.png" style="width: 400px; margin: 10px; float: right;" />Registration is now open for CppCon 2026!&nbsp;The conference starts on September 12 and will be held&nbsp;<a href="https://cppcon.org/">in person in Aurora, CO</a>. To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting videos of some of the top-rated talks from last year&#39;s conference. Here&rsquo;s another CppCon talk video we hope you will enjoy &ndash; and why not&nbsp;<a href="https://cppcon.org/registration/"><strong>register today</strong></a><strong>&nbsp;for CppCon 2026!</strong></p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=SzjJfKHygaQ">CppCon 2025 More Speed &amp; Simplicity: Practical Data-Oriented Design in C++</a></h3>
	<p>
		by&nbsp;Vittorio Romeo</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Data-Oriented Design (DOD) presents a different way of thinking: prioritizing data layout not only unlocks significant performance gains via cache efficiency but can also lead to surprising simplicity in the code that actually processes the data.</p>
	<p>
		This talk is a practical introduction for C++ developers familiar with OOP. Through a step-by-step refactoring of a conventional OOP design, we&rsquo;ll both cover how data access patterns influence speed and how a data-first approach can clarify intent.</p>
	<p>
		We&rsquo;ll measure the performance impact with benchmarks and analyze how the refactored code, particularly the data processing loops, can become more direct and conceptually simpler.</p>
	<p>
		Key techniques like Structure-of-Arrays (SoA) vs. Array-of-Structures (AoS) will be explained and benchmarked, considering their effects on both execution time and code clarity. We&rsquo;ll pragmatically weigh the strengths (performance, simpler data logic) and weaknesses of DOD, highlighting how it can complement, not just replace, OOP.</p>
	<p>
		We&rsquo;ll also demonstrate that DOD doesn&rsquo;t necessitate abandoning robust abstractions, showcasing C++ techniques for creating safe, expressive APIs that manage both complexity and performance.</p>
	<p>
		Let&rsquo;s learn how thinking &ldquo;data-first&rdquo; can make your C++ code faster and easier to reason about!</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand,]]></dc:subject>
      <pubDate>Wed, 18 Mar 2026 16:59:04 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>The cost of a function call &#45;&#45; Daniel Lemire</title>
      <link>https://isocpp.org//blog/2026/03/the-cost-of-a-function-call-daniel-lemire</link>
      <guid>https://isocpp.org//blog/2026/03/the-cost-of-a-function-call-daniel-lemire</guid>
      <description><![CDATA[<p>
	<img alt="Capture-decran-le-2026-02-08-a-15.07.17-825x510.png" src="https://isocpp.org/files/img/Capture-decran-le-2026-02-08-a-15.07.17-825x510.png" style="width: 400px; margin: 10px; float: right;" />Function calls are cheap &mdash; but they are not free &mdash; and in tight loops their cost can dominate your runtime. Modern compilers rely on inlining to remove that overhead and unlock deeper optimizations, sometimes turning an ordinary loop into dramatically faster SIMD code.</p>
<blockquote>
	<h3>
		<a href="https://lemire.me/blog/2026/02/08/the-cost-of-a-function-call/">The cost of a function call</a></h3>
	<p>
		by Daniel Lemire</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		When programming, we chain functions together. Function A calls function B. And so forth.</p>
	<p>
		You do not have to program this way, you could write an entire program using a single function. It would be a fun exercise to write a non-trivial program using a single function&hellip; as long as you delegate the code writing to AI because human beings quickly struggle with long functions.</p>
	<p>
		A key compiler optimization is &lsquo;inlining&rsquo;: the compiler takes your function definition and it tries to substitute it at the call location. It is conceptually quite simple. Consider the following example where the function&nbsp;<code>add3</code>&nbsp;calls the function&nbsp;<code>add</code>.</p>
	<div>
		<pre>
<code>int add(int x, int y) &#123; &#10;     return x + y; &#10;&#125; &#10;int add3(int x, int y, int z) &#123; &#10;     return add(add(x, y), z); &#10;&#125; </code></pre>
	</div>
	<p>
		You can manually inline the call as follows.</p>
	<div>
		<pre>
<code>int add3(int x, int y, int z) &#123; &#10;     return x + y + z; &#10;&#125;</code></pre>
	</div>
</blockquote>
<p>
	&nbsp;</p>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Tue, 17 Mar 2026 18:56:34 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Implementing vector &#45;&#45; Quasar Chunawala</title>
      <link>https://isocpp.org//blog/2026/03/implementing-vectort-quasar-chunawala</link>
      <guid>https://isocpp.org//blog/2026/03/implementing-vectort-quasar-chunawala</guid>
      <description><![CDATA[<p>
	<img alt="logo.png" src="https://isocpp.org/files/img/logo.png" style="width: 225px; margin: 10px; float: right;" />Finding out how to implement features from the standard library can be a useful learning exercise. Quasar Chunawala explores implementing your own version of std::vector.</p>
<blockquote>
	<h3>
		<a href="https://accu.org/journals/overload/34/191/chunawala/">Implementing vector&lt;T&gt;</a></h3>
	<p>
		by Quasar Chunawala</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		The most fundamental STL data-structure is the&nbsp;<code>vector</code>. In this article, I am going to explore writing a custom implementation of the&nbsp;<code>vector</code>&nbsp;data-structure. The standard library implementation&nbsp;<code>std::vector</code>&nbsp;is a work of art, it is extremely efficient at managing memory and has been tested&nbsp;<em>ad nauseam</em>. It is much better, in fact, than a homegrown alternative would be.</p>
	<p>
		Why then write our own custom&nbsp;<code>vector</code>?</p>
	<ul>
		<li>
			Writing a naive implementation is challenging and rewarding. It is a lot of fun!</li>
		<li>
			Coding up these training implementations, thinking about corner cases, getting your code reviewed, revisiting your design is very effective at understanding the inner workings of STL data-structures and writing good C++ code.</li>
		<li>
			Its a good opportunity to learn about low-level memory management algorithms.</li>
	</ul>
	<p>
		We are not aiming for an exhaustive representation or implementation, but we will write test cases for all basic functionalities expected out of a&nbsp;<code>vector</code>-like data-structure.</p>
	<p>
		Informally, a&nbsp;<code>std::vector&lt;T&gt;</code>&nbsp;represents a dynamically allocated array that can grow as needed. As with any array, a&nbsp;<code>std::vector&lt;T&gt;</code>&nbsp;is a sequence of elements of type&nbsp;<code>T</code>&nbsp;arranged contiguously in memory. We will put our homegrown version of&nbsp;<code>vector&lt;T&gt;</code>&nbsp;under the&nbsp;<code>dev</code>&nbsp;namespace.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Wed, 11 Mar 2026 18:54:09 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Flavours of Reflection &#45;&#45; Bernard Teo</title>
      <link>https://isocpp.org//blog/2026/03/flavours-of-reflection-bernard-teo</link>
      <guid>https://isocpp.org//blog/2026/03/flavours-of-reflection-bernard-teo</guid>
      <description><![CDATA[<p>
	Reflection is coming to C++26 and is arguably the most anticipated feature accepted into this version of the standard. With substantial implementation work already done in Clang and GCC, compile-time reflection in C++ is no longer theoretical &mdash; it&rsquo;s right around the corner.</p>
<blockquote>
	<h3>
		<a href="https://semantics.bernardteo.me/2026/01/30/flavours-of-reflection.html">Flavours of Reflection:&nbsp;Comparing C++26 reflection with similar capabilities in other programming languages</a></h3>
	<p>
		by Bernard Teo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Reflection is imminent. It is set to be part of C++26, and it is perhaps the most anticipated feature accepted into this version of the standard. Lots of implementation work has already been done for&nbsp;<a href="https://github.com/bloomberg/clang-p2996/tree/p2996">Clang</a>&nbsp;and&nbsp;<a href="https://gcc.gnu.org/pipermail/gcc-patches/2025-November/700733.html">GCC</a>&nbsp;&mdash; they pretty much already work (both are on Compiler Explorer), and it hopefully won&rsquo;t be too long before they get merged into their respective compilers.</p>
	<p>
		Many programming languages already provide some reflection capabilities, so some people may think that C++ is simply playing catch-up. However, C++&rsquo;s reflection feature does differ in important ways. This blog post explores the existing reflection capabilities of Python, Java, C#, and Rust, comparing them with one another as well as with the flavour of reflection slated for C++26.</p>
	<p>
		In the rest of this blog post, the knowledge of C++ fundamentals is assumed (but not for the other programming languages, where non-commonsensical code will be explained).</p>
	<p id="the-example">
		&nbsp;</p>
</blockquote>
<p>
	&nbsp;</p>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Tue, 03 Mar 2026 18:48:20 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>IIFE for Complex Initialization &#45;&#45; Bartlomiej Filipek</title>
      <link>https://isocpp.org//blog/2026/02/iife-for-complex-initialization-bartlomiej-filipek1</link>
      <guid>https://isocpp.org//blog/2026/02/iife-for-complex-initialization-bartlomiej-filipek1</guid>
      <description><![CDATA[<p>
	<img alt="filipek-iife.png" src="https://isocpp.org/files/img/filipek-iife.png" style="width: 366px; margin: 10px; float: right;" />What do you do when the code for a variable initialization is complicated? Do you move it to another method or write inside the current scope? Bartlomiej Filipek presents a trick that allows computing a value for a variable, even a const variable, with a compact notation.</p>
<blockquote>
	<h3>
		<a href="https://www.cppstories.com/2016/11/iife-for-complex-initialization/">IIFE for Complex Initialization</a></h3>
	<p>
		by Bartlomiej Filipek</p>
</blockquote>
<p>
	In this article:</p>
<blockquote>
	<p>
		I hope you&rsquo;re initializing most variables as&nbsp;<code>const</code>&nbsp;(so that the code is more explicit, and also compiler can reason better about the code and optimize).</p>
	<p>
		For example, it&rsquo;s easy to write:</p>
	<div>
		<pre tabindex="0">
<code data-lang="cpp">const int myParam = inputParam * 10 + 5; </code></pre>
	</div>
	<p>
		or even:</p>
	<div>
		<pre tabindex="0">
<code data-lang="cpp">const int myParam = bCondition ? inputParam*2 : inputParam + 10; </code></pre>
	</div>
	<p>
		But what about complex expressions? When we have to use several lines of code, or when the&nbsp;<code>?</code>&nbsp;operator is not sufficient.</p>
	<p>
		&lsquo;It&rsquo;s easy&rsquo; you say: you can wrap that initialization into a separate function.</p>
	<p>
		While that&rsquo;s the right answer in most cases, I&rsquo;ve noticed that in reality a lot of people write code in the current scope. That forces you to stop using&nbsp;<code>const</code>&nbsp;and code is a bit uglier.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Fri, 27 Feb 2026 18:43:58 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Range adaptors – 5 years after C++20 &#45;&#45; Hannes Hauswedell</title>
      <link>https://isocpp.org//blog/2026/02/range-adaptors-5-years-after-cpp20-hannes-hauswedell-meetingc-2025</link>
      <guid>https://isocpp.org//blog/2026/02/range-adaptors-5-years-after-cpp20-hannes-hauswedell-meetingc-2025</guid>
      <description><![CDATA[<p>
	A look back on major design decisions in C++ Ranges and how they may be viewed today.</p>
<blockquote>
	<h3>
		<a href="https://www.youtube.com/watch?v=nficAvk5RA4" target="_blank">Range adaptors - 5 years after C++20</a></h3>
	<p>
		by Hannes Hauswedell</p>
</blockquote>
<p>
	Watch now:</p>
<blockquote>
	<div class="embed_media">
		&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/nficAvk5RA4?si=w86EVk7oX89uVcPg" title="YouTube video player" width="560"&gt;&lt;/iframe&gt;</div>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand,]]></dc:subject>
      <pubDate>Mon, 23 Feb 2026 22:19:26 +0000</pubDate>
      <dc:creator>Hannes Hauswedell</dc:creator>
    </item>

    <item>
      <title>So how do you quickly concatenate strings? &#45;&#45; Aleksandr Orefkov</title>
      <link>https://isocpp.org//blog/2026/02/so-how-do-you-quickly-concatenate-strings-aleksandr-orefkov</link>
      <guid>https://isocpp.org//blog/2026/02/so-how-do-you-quickly-concatenate-strings-aleksandr-orefkov</guid>
      <description><![CDATA[<blockquote>
	<h3>
		<a href="https://orefkov.github.io/simstr/articles/fast_concat.html">So how do you quickly concatenate strings?</a></h3>
</blockquote>
<blockquote>
	<p>
		By Aleksandr Orefkov</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		All practicing programmers have to concatenate strings. Precisely concatenate, we don&rsquo;t have some JavaScript or PHP, in C++ we have this fancy word for it. Programmers in other languages &#8203;&#8203;simply &ldquo;add&rdquo; strings together without much thought, without even thinking about this operation. After all, what could be simpler than</p>
	<pre class="prettyprint lang-cpp">
return "The answer is " + str_answer + ", count is " + count;</pre>
	<p>
		But while it&rsquo;s forgivable for script kiddies not to think about the meaning behind such a simple notation, it&rsquo;s unacceptable for an experienced developer to approach such an important issue so irresponsibly. An experienced developer, imagining such C++ code, immediately sees the terrifying abyss of problems that such an approach can create.</p>
	<p>
		What type is str_answer? What type is count? &ldquo;The answer is &ldquo; and &ldquo;, count is &ldquo; - are literals that add to std::string as a const char*. So, strlen will be called. I wonder if the compiler will be able to optimize and calculate their length at compile time? Oh well, it seems like constexpr is in the addition, let&rsquo;s hope so.<br />
		This is the first level of problems for now. And let&rsquo;s say we successfully solved them, creating the following code:</p>
	<pre class="prettyprint lang-cpp">
std::string make_answer(std::string_view str_answer, int count) {&#10;    return "The answer is " + std::string{str_answer}&#10;        + ", count is " + std::to_string(count);&#10;}&#10;</pre>
	<p>
		It sounds like &ldquo;Hurray!&rdquo;, but it&rsquo;s somehow not loud enough&hellip;</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Thu, 19 Feb 2026 20:04:04 +0000</pubDate>
      <dc:creator>AOrefkov</dc:creator>
    </item>

    <item>
      <title>15 Different Ways to Filter Containers in Modern C++ &#45;&#45; Bartłomiej Filipek</title>
      <link>https://isocpp.org//blog/2026/02/15-different-ways-to-filter-containers-in-modern-cpp-bartomiej-filipek1</link>
      <guid>https://isocpp.org//blog/2026/02/15-different-ways-to-filter-containers-in-modern-cpp-bartomiej-filipek1</guid>
      <description><![CDATA[<p>
	<img alt="logo.png" src="https://isocpp.org/files/img/logo.png" style="width: 225px; margin: 10px; float: right;" />Filtering items from a container is a common situation. Bart&#322;omiej Filipek demonstrates various approaches from different versions of C++.</p>
<blockquote>
	<h3>
		<a href="https://accu.org/journals/overload/33/190/filipek/">15 Different Ways to Filter Containers in Modern C++</a></h3>
	<p>
		by Bart&#322;omiej Filipek</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Do you know how many ways we can implement a filter function in C++? While the problem is relatively easy to understand &ndash; take a container, copy elements that match a predicate and the return a new container &ndash; it&rsquo;s good to exercise with the C++ Standard Library and check a few ideas. We can also apply some modern C++ techniques, including C++23. Let&rsquo;s start!</p>
	<p>
		<strong>The problem statement</strong></p>
	<p>
		To be precise by a&nbsp;<em>filter</em>, I mean a function with the following interface:</p>
	<pre>
  auto Filter(const Container&amp; cont,&#10;              UnaryPredicate p) {}</pre>
	<p>
		It takes a container and a predicate, and then it creates an output container with elements that satisfy the predicate. We can use it like the following:</p>
	<pre>
  const std::vector&lt;std::string&gt; vec{&#10;    "Hello", "**txt", "World", "error", "warning",&#10;    "C++", "****" };&#10;  auto filtered = Filter(vec, [](auto&amp; elem) {&#10;    return !elem.starts_with(&#39;*&#39;); });&#10;    // filtered should have "Hello", "World",&#10;    // "error", "warning", "C++"</pre>
	<p>
		Writing such a function can be a good exercise with various options and algorithms in the Standard Library. What&rsquo;s more, our function hides internal things like iterators, so it&rsquo;s more like a range-based version.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Tue, 17 Feb 2026 23:09:00 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Coroutines – A Deep Dive &#45;&#45; Quasar Chunawala</title>
      <link>https://isocpp.org//blog/2026/02/coroutines-a-deep-dive-quasar-chunawala1</link>
      <guid>https://isocpp.org//blog/2026/02/coroutines-a-deep-dive-quasar-chunawala1</guid>
      <description><![CDATA[<p>
	<img alt="logo.png" src="https://isocpp.org/files/img/logo.png" style="width: 225px; margin: 10px; float: right;" />Coroutines are powerful but require some boilerplate code. Quasar Chunawala explains what you need to implement to get coroutines working.</p>
<blockquote>
	<h3>
		<a href="https://accu.org/journals/overload/33/190/chunawala/">Coroutines &ndash; A Deep Dive</a></h3>
	<p>
		by Quasar Chunawala</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Following on from the introduction in the editorial, let&rsquo;s understand the basic mechanics needed to code up a simple coroutine, and I&rsquo;ll show you how to yield from the coroutine and await results.</p>
	<p>
		<strong>The simplest coroutine</strong></p>
	<p>
		The following code is the simplest implementation of a coroutine:</p>
	<pre>
  #include &lt;coroutine&gt;&#10;  void coro_func(){&#10;    co_return;&#10;  }&#10;  int main(){&#10;    coro_func();&#10;  }</pre>
	<p>
		Our first coroutine will just return nothing. It will not do anything else. Sadly, the preceding code is too simple for a functional coroutine and it will not compile. When compiling with gcc 15.2, we get the error shown in Figure 1.</p>
	<table style="width:778px;">
		<tbody>
			<tr>
				<td>
					<pre>
&lt;source&gt;: In function &#39;void coro_func()&#39;:&#10;&lt;source&gt;:4:5: error: unable to find the promise type for this coroutine&#10;    4 |     co_return;&#10;      |     ^~~~~~~~~</pre>
				</td>
			</tr>
			<tr>
				<td>
					&nbsp;</td>
			</tr>
		</tbody>
	</table>
	Looking at C++ reference, we see that the return type of a coroutine must define a type named&nbsp;<code>promise_type</code>. Why do we need a promise? The&nbsp;<code>promise_type</code>&nbsp;is the second important piece in the coroutine mechanism. We can draw an analogy from futures and promises which are essential blocks for achieving asynchronous programming in C++. The future is the thing, that the function that does the asynchronous computation, hands out back to the caller, that the caller can use to retrieve the result by invoking the&nbsp;<code>get()</code>&nbsp;member function. The future has the role of the return object.&nbsp;</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Fri, 13 Feb 2026 23:06:51 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Concurrency Flavours &#45;&#45; Lucian Radu Teodorescu</title>
      <link>https://isocpp.org//blog/2026/02/concurrency-flavours-lucian-radu-teodorescu1</link>
      <guid>https://isocpp.org//blog/2026/02/concurrency-flavours-lucian-radu-teodorescu1</guid>
      <description><![CDATA[<p>
	<img alt="logo.png" src="https://isocpp.org/files/img/logo.png" style="width: 225px; margin: 10px; float: right;" />Concurrency has many different approaches. Lucian Radu Teodorescu clarifies terms, showing how different approaches solve different problems.</p>
<blockquote>
	<h3>
		<a href="https://accu.org/journals/overload/33/190/teodorescu/">Concurrency Flavours</a></h3>
	<p>
		by Lucian Radu Teodorescu</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Most engineers today use concurrency &ndash; often without a clear understanding of what it is, why it&rsquo;s needed, or which flavour they&rsquo;re dealing with. The vocabulary around concurrency is rich but muddled. Terms like parallelism, multithreading, asynchrony, reactive programming, and structured concurrency are regularly conflated &ndash; even in technical discussions.</p>
	<p>
		This confusion isn&rsquo;t just semantic &ndash; it leads to real-world consequences. If the goal behind using concurrency is unclear, the result is often poor concurrency &ndash; brittle code, wasted resources, or systems that are needlessly hard to reason about. Choosing the right concurrency strategy requires more than knowing a framework or following a pattern &ndash; it requires understanding what kind of complexity you&rsquo;re introducing, and why.</p>
	<p>
		To help clarify this complexity, the article aims to map out some of the main flavours of concurrency. Rather than defining terms rigidly, we&rsquo;ll explore the motivations behind them &ndash; and the distinct mindsets they evoke. While this article includes a few C++ code examples (using features to be added in C++26), its focus is conceptual &ndash; distinguishing between the flavours of concurrency. Our goal is to refine the reader&rsquo;s taste for concurrency.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Wed, 04 Feb 2026 23:03:50 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Exclusive state access, I &#45;&#45; Andrzej Krzemieński</title>
      <link>https://isocpp.org//blog/2026/01/value-semantics-andrzej-krzemieski</link>
      <guid>https://isocpp.org//blog/2026/01/value-semantics-andrzej-krzemieski</guid>
      <description><![CDATA[<p>
	<img alt="krzemienskivaluesemantics.png" src="https://isocpp.org/files/img/krzemienskivaluesemantics.png" style="width: 400px; margin: 10px; float: right;" />Value semantics is a way of structuring programs around what values mean, not where objects live, and C++ is explicitly designed to support this model. In a value-semantic design, objects are merely vehicles for communicating state, while identity, address, and physical representation are intentionally irrelevant.</p>
<blockquote>
	<h3>
		<a href="https://thecppway.com/posts/value_semantics/">Exclusive state access, I</a></h3>
	<p>
		by Andrzej Krzemie&#324;ski</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		<em>Value semantics</em>&nbsp;is a way of organizing your programs, which C++ supports and endorses. Its key characteristics in a nutshell:</p>
	<ol>
		<li>
			Throughout its lifetime an object (via its type and special member functions) is used to represent a&nbsp;<em>value</em>.</li>
		<li>
			Different parts of the program communicate values via objects. While the value matters, objects themselves (their address, their&nbsp;<code>sizeof</code>) do not.</li>
		<li>
			Object&rsquo;s value is isolated from other objects&rsquo; values.</li>
	</ol>
	<p>
		This begs the question,&nbsp;<em>what is value</em>, but we will not answer it. First, because it is difficult, and maybe impossible. It is pretty clear what value objects of type&nbsp;<code>int</code>&nbsp;represent. It is fairly uncontroversial what value is represented by&nbsp;<code>vector&lt;int&gt;</code>, once we accept that the value representation need not fit into the&nbsp;<code>sizeof</code>&nbsp;of the object, but can spread across other memory locations and resources, and that vector&rsquo;s capacity is not part of this value, even though it is part of its&nbsp;<em>state</em>. But there are things like&nbsp;<code>std::mutex</code>&nbsp;where naming the value is tricky.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Tue, 27 Jan 2026 22:55:53 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Singleton done right in C++ &#45;&#45; Andreas Fertig</title>
      <link>https://isocpp.org//blog/2026/01/singleton-done-right-in-cpp-andreas-fertig</link>
      <guid>https://isocpp.org//blog/2026/01/singleton-done-right-in-cpp-andreas-fertig</guid>
      <description><![CDATA[<p>
	<img alt="andreasfertig.png" src="https://isocpp.org/files/img/andreasfertig.png" style="width: 300px; margin: 10px; float: right; height: 371px;" />In today&#39;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.</p>
<blockquote>
	<h3>
		<a href="https://andreasfertig.com/blog/2026/01/singleton-done-right-in-cpp/">Singleton done right in C++</a></h3>
	<p>
		by Andreas Fertig</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Let&#39;s use a usage pattern for a singleton that I see frequently, a system-wide logger. A simple implementation can look like the following code:</p>
	<p>
		class Logger {<br />
		&nbsp; Logger() = default;</p>
	<p>
		public:<br />
		&nbsp; static Logger&amp; Instance()<br />
		&nbsp; {<br />
		&nbsp;&nbsp;&nbsp; static Logger theOneAndOnlyLogger{};</p>
	<p>
		&nbsp;&nbsp;&nbsp; return theOneAndOnlyLogger;<br />
		&nbsp; }</p>
	<p>
		&nbsp; void Info(std::string_view msg) { std::print("Info: {}", msg); }<br />
		&nbsp; void Error(std::string_view msg) { std::print("Error: {}", msg); }<br />
		};</p>
	<p>
		The key parts for a singleton in C++ are that the constructor is private and an access function that is static. With that, you ensure that a singleton object, here Logger can only be constructed by calling Instance, essentially limiting the number of Logger objects to a single one.</p>
	<p>
		You&#39;re using such a Logger like this:</p>
	<p>
		Logger::Instance().Info("A test");</p>
</blockquote>
<pre class="prettyprint lang-cpp">
&#10;&#10;</pre>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Wed, 21 Jan 2026 18:21:26 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Talk: Who’s Afraid of the Big Bad Template &#45;&#45; Coral Kashri</title>
      <link>https://isocpp.org//blog/2026/01/talk-whos-afraid-of-the-big-bad-template-coral-kashri1</link>
      <guid>https://isocpp.org//blog/2026/01/talk-whos-afraid-of-the-big-bad-template-coral-kashri1</guid>
      <description><![CDATA[<p>
	<img alt="2026-01-09_11-18-10.png" src="https://isocpp.org/files/img/2026-01-09_11-18-10.png" style="width: 400px; margin: 10px; float: right;" /></p>
<p>
	Templates and metaprogramming considered as the big bad wolf of C++, and it&rsquo;s time to stop being scared of this wolf, as it&rsquo;s one of the most powerful creatures of C++.</p>
<blockquote>
	<h3>
		<a href="https://cppsenioreas.wordpress.com/2026/01/06/talk-whos-afraid-of-the-big-bad-template/">Talk: Who&rsquo;s Afraid of the Big Bad Template</a></h3>
	<p>
		by Coral Kashri</p>
</blockquote>
<p>
	From the description:</p>
<blockquote>
	<p>
		In this talk I&rsquo;ve demonstrated the power of this incredible creature, while I hope that this talk would be an easy enterence to this concept (pan intended), and to help you developing the anticipation to walk into the cave of metaprogramming.</p>
	<p>
		The talk was give on Core C++ 2025.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Product News, Video & On-Demand,]]></dc:subject>
      <pubDate>Thu, 15 Jan 2026 18:15:57 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Talk: Who’s Afraid of the Big Bad Template &#45;&#45; Coral Kashri</title>
      <link>https://isocpp.org//blog/2026/01/talk-whos-afraid-of-the-big-bad-template-coral-kashri</link>
      <guid>https://isocpp.org//blog/2026/01/talk-whos-afraid-of-the-big-bad-template-coral-kashri</guid>
      <description><![CDATA[<p>
	&nbsp;</p>
<p>
	<img alt="2026-01-09_11-18-10.png" src="https://isocpp.org/files/img/2026-01-09_11-18-10.png" style="width: 400px; margin: 10px; float: right;" /></p>
<p>
	Templates and metaprogramming considered as the big bad wolf of C++, and it&rsquo;s time to stop being scared of this wolf, as it&rsquo;s one of the most powerful creatures of C++.</p>
<blockquote>
	<h3>
		<a href="https://cppsenioreas.wordpress.com/2026/01/06/talk-whos-afraid-of-the-big-bad-template/">Talk: Who&rsquo;s Afraid of the Big Bad Template</a></h3>
	<p>
		by Coral Kashri</p>
</blockquote>
<p>
	From the description:</p>
<blockquote>
	<p>
		In this talk I&rsquo;ve demonstrated the power of this incredible creature, while I hope that this talk would be an easy enterence to this concept (pan intended), and to help you developing the anticipation to walk into the cave of metaprogramming.</p>
	<p>
		The talk was give on Core C++ 2025.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Product News, Video & On-Demand,]]></dc:subject>
      <pubDate>Thu, 15 Jan 2026 18:15:10 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>2025, A Year of Conferences &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2026/01/2025-a-year-of-conferences-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2026/01/2025-a-year-of-conferences-sandor-dargo</guid>
      <description><![CDATA[<p>
	<img alt="cpponsea2025-folkestone-to-dover.jpg" src="https://isocpp.org/files/img/cpponsea2025-folkestone-to-dover.jpg" style="width: 400px; margin: 10px; float: right;" />Conferences are never just about the talks &mdash; they&rsquo;re about time, travel, tradeoffs, and the people you meet along the way. After a year of attending several C++ events across formats and cities, this post is a personal look at how different conferences balance technical depth, community, and the experience of being there.</p>
<blockquote>
	<h3>
		<a href="https://www.sandordargo.com/blog/2025/12/17/conferences-2025">2025, A Year of Conferences</a></h3>
	<p>
		by Sandor Dargo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		This year I had the chance to attend three conferences onsite, plus one online, and even a meetup in my hometown, Budapest. Depending on who you ask, maybe it&rsquo;s not a lot &mdash; I know some speakers do twice as many. But if you ask my family, you&rsquo;d probably get a different (and understandable) answer. For me &mdash; for us &mdash; it&rsquo;s a lot. It&rsquo;s also an honour and a privilege in many ways.</p>
	<p>
		To express my appreciation and gratitude toward the organizers and the community, I do two things:</p>
	<ul>
		<li>
			I try to prepare well for my talks.</li>
		<li>
			I post&nbsp;<a href="https://www.sandordargo.com/tags/tripreport/">trip reports</a>&nbsp;soon after each event &mdash; usually within a week.</li>
	</ul>
	<p>
		Those&nbsp;<a href="https://www.sandordargo.com/tags/tripreport/">trip reports</a>&nbsp;are moderately personal: I share which talks I liked and also some of my impressions, but I try to make them useful rather than purely personal. Still, I think that once in a while, a more personal, less serious post has its place &mdash; and that&rsquo;s what this one wanted to be originally.</p>
	<p>
		At one of the social dinners at CppCon, a developer working for a FAANG company in New York asked me which conference I&rsquo;d recommend. My answer: it depends on your goals &mdash; and your budget and constraints.</p>
	<p>
		&nbsp;</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Fri, 09 Jan 2026 17:33:55 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>A Guest Editorial &#45;&#45; Quasar Chunawala, Frances Buontempo</title>
      <link>https://isocpp.org//blog/2026/01/a-guest-editorial-quasar-chunawala-frances-buontempo</link>
      <guid>https://isocpp.org//blog/2026/01/a-guest-editorial-quasar-chunawala-frances-buontempo</guid>
      <description><![CDATA[<p>
	<img alt="2025-12-19_10-30-29.png" src="https://isocpp.org/files/img/2025-12-19_10-30-29.png" style="width: 241px; margin: 10px; float: right;" />C++20 introduced coroutines. Quasar Chunawala, our guest editor for this edition, gives an overview.</p>
<blockquote>
	<h3>
		<a href="https://accu.org/journals/overload/33/190/chunawala-buontempo/">A Guest Editorial</a></h3>
	<p>
		by Quasar Chunawala, Frances Buontempo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		You&rsquo;ve likely heard about this new C++20 feature,&nbsp;coroutines. I think that this is a really important subject and there are several cool use-cases for coroutines. A&nbsp;coroutine&nbsp;in the simplest terms is just a function that you can pause in the middle. At a later point the caller will decide to resume the execution of the function right where you left off. Unlike a function therefore, coroutines are always stateful - you at least need to remember where you left off in the function body.</p>
	<p>
		Coroutines can simplify our code! Coroutines are a great tool, when it comes to implementing parsers.</p>
	<p>
		<strong>The coroutine return type</strong></p>
	<p>
		The initial call to the coroutine function will produce a return object of a certain&nbsp;<code>ReturnType</code>&nbsp;and hand it back to the caller. The interface of this type is what is going to determine what the coroutine is capable of. Since coroutines are super-flexible, we can do a whole lot with this return object. If you have some coroutine, and you want to understand what it&rsquo;s doing, the first thing you should look at is the&nbsp;<code>ReturnType</code>, and what it&rsquo;s interface is. The important thing here is, we design this&nbsp;<code>ReturnType</code>. If you are writing a coroutine, you can decide what goes into this interface.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Wed, 07 Jan 2026 17:29:04 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>15 Different Ways to Filter Containers in Modern C++ &#45;&#45; Bartłomiej Filipek</title>
      <link>https://isocpp.org//blog/2026/01/15-different-ways-to-filter-containers-in-modern-cpp-bartomiej-filipek</link>
      <guid>https://isocpp.org//blog/2026/01/15-different-ways-to-filter-containers-in-modern-cpp-bartomiej-filipek</guid>
      <description><![CDATA[<p>
	<img alt="logo.png" src="https://isocpp.org/files/img/logo.png" style="width: 225px; margin: 10px; float: right;" />Filtering items from a container is a common situation. Bart&#322;omiej Filipek demonstrates various approaches from different versions of C++.</p>
<blockquote>
	<h3>
		<a href="https://accu.org/journals/overload/33/190/filipek/">15 Different Ways to Filter Containers in Modern C++</a></h3>
	<p>
		by Bart&#322;omiej Filipek</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Do you know how many ways we can implement a filter function in C++? While the problem is relatively easy to understand &ndash; take a container, copy elements that match a predicate and the return a new container &ndash; it&rsquo;s good to exercise with the C++ Standard Library and check a few ideas. We can also apply some modern C++ techniques, including C++23. Let&rsquo;s start!</p>
	<p>
		<strong>The problem statement</strong></p>
	<p>
		To be precise by a&nbsp;<em>filter</em>, I mean a function with the following interface:</p>
	<pre>
  auto Filter(const Container&amp; cont,&#10;              UnaryPredicate p) {}</pre>
	<p>
		It takes a container and a predicate, and then it creates an output container with elements that satisfy the predicate. We can use it like the following:</p>
	<pre>
  const std::vector&lt;std::string&gt; vec{&#10;    "Hello", "**txt", "World", "error", "warning",&#10;    "C++", "****" };&#10;  auto filtered = Filter(vec, [](auto&amp; elem) {&#10;    return !elem.starts_with(&#39;*&#39;); });&#10;    // filtered should have "Hello", "World",&#10;    // "error", "warning", "C++"</pre>
	<p>
		Writing such a function can be a good exercise with various options and algorithms in the Standard Library. What&rsquo;s more, our function hides internal things like iterators, so it&rsquo;s more like a range-based version.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Mon, 05 Jan 2026 17:26:51 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Time in C++: std::chrono::high_resolution_clock:  Myths and Realities &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2026/01/time-in-cpp-stdchronohigh-resolution-clock-myths-and-realities-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2026/01/time-in-cpp-stdchronohigh-resolution-clock-myths-and-realities-sandor-dargo</guid>
      <description><![CDATA[<p>
	<img alt="SANDOR_DARGO_ROUND.JPG" src="https://isocpp.org/files/img/SANDOR_DARGO_ROUND.JPG" style="width: 200px; margin: 10px; float: right; height: 204px;" />std::chrono::high_resolution_clock sounds like the obvious choice when you care about precision, but its name hides some important caveats. In this article, we&rsquo;ll demystify what &ldquo;high resolution&rdquo; really means in &lt;chrono&gt;, why this clock is often just an alias, and when&mdash;if ever&mdash;it&rsquo;s actually the right tool to use.</p>
<blockquote>
	<h3>
		<a href="https://www.sandordargo.com/blog/2025/12/10/clocks-part-4-high_resolution_clock">Time in C++: std::chrono::high_resolution_clock - Myths and Realities</a></h3>
	<p>
		by Sandor Dargo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		If there&rsquo;s one clock in&nbsp;<code>&lt;chrono&gt;</code>&nbsp;that causes the most confusion, it&rsquo;s&nbsp;<code>std::chrono::high_resolution_clock</code>. The name sounds too tempting &mdash; who wouldn&rsquo;t want &ldquo;the highest resolution&rdquo;? But like many things in C++, the details matter.</p>
	<p>
		In the earlier parts of this series, we looked at&nbsp;<a href="https://www.sandordargo.com/blog/2025/11/26/clocks-part-2-system_clock"><code>system_clock</code>&nbsp;as the wall-clock time source</a>, and at&nbsp;<a href="https://www.sandordargo.com/blog/2025/12/03/clocks-part-3-steady_clock"><code>steady_clock</code>&nbsp;as the reliable choice for measuring intervals</a>. This time, we&rsquo;ll tackle the so-called &ldquo;high-resolution&rdquo; clock, separate fact from myth, and see why it&rsquo;s not always the right choice &mdash; even when you think you need precision.</p>
	<p id="what-high-resolution-actually-means">
		<strong>What &ldquo;high resolution&rdquo; actually means</strong></p>
	<p>
		A clock&rsquo;s resolution (or precision) is the granularity of its tick period &mdash; i.e., the smallest representable step in time for that clock&rsquo;s&nbsp;<code>time_point</code>. In&nbsp;<code>&lt;chrono&gt;</code>&nbsp;it&rsquo;s exposed via&nbsp;<code>Clock::period</code>, a&nbsp;<code>std::ratio</code>.</p>
	<p>
		Notice an important difference. I didn&rsquo;t mention accuracy, only precision. A clock might represent nanoseconds, but still be inaccurate due to hardware or OS scheduling. A higher resolution doesn&rsquo;t necessarily mean better measurement. For timing, stability and monotonicity matter much more than how fine-grained the tick is.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Fri, 02 Jan 2026 17:22:21 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Coroutines – A Deep Dive &#45;&#45; Quasar Chunawala</title>
      <link>https://isocpp.org//blog/2025/12/coroutines-a-deep-dive-quasar-chunawala</link>
      <guid>https://isocpp.org//blog/2025/12/coroutines-a-deep-dive-quasar-chunawala</guid>
      <description><![CDATA[<p>
	<img alt="logo.png" src="https://isocpp.org/files/img/logo.png" style="width: 225px; margin: 10px; float: right;" />Coroutines are powerful but require some boilerplate code. Quasar Chunawala explains what you need to implement to get coroutines working.</p>
<blockquote>
	<h3>
		<a href="https://accu.org/journals/overload/33/190/chunawala/">Coroutines &ndash; A Deep Dive</a></h3>
	<p>
		by Quasar Chunawala</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		The following code is the simplest implementation of a coroutine:</p>
	<pre>
  #include &lt;coroutine&gt;&#10;  void coro_func(){&#10;    co_return;&#10;  }&#10;  int main(){&#10;    coro_func();&#10;  }</pre>
	<p>
		Our first coroutine will just return nothing. It will not do anything else. Sadly, the preceding code is too simple for a functional coroutine and it will not compile. When compiling with gcc 15.2, we get the error shown in Figure 1.</p>
	<table style="width:945px;">
		<tbody>
			<tr>
				<td>
					<pre>
&lt;source&gt;: In function &#39;void coro_func()&#39;:&#10;&lt;source&gt;:4:5: error: unable to find the promise type for this coroutine&#10;    4 |     co_return;&#10;      |     ^~~~~~~~~</pre>
				</td>
			</tr>
			<tr>
				<td style="text-align: center;">
					<em>Figure 1</em></td>
			</tr>
		</tbody>
	</table>
	<p>
		Looking at C++ reference, we see that the return type of a coroutine must define a type named&nbsp;<code>promise_type</code>.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Tue, 30 Dec 2025 17:18:45 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Concurrency Flavours &#45;&#45; Lucian Radu Teodorescu</title>
      <link>https://isocpp.org//blog/2025/12/concurrency-flavours-lucian-radu-teodorescu</link>
      <guid>https://isocpp.org//blog/2025/12/concurrency-flavours-lucian-radu-teodorescu</guid>
      <description><![CDATA[<p>
	<img alt="logo.png" src="https://isocpp.org/files/img/logo.png" style="width: 225px; margin: 10px; float: right;" />Concurrency has many different approaches. Lucian Radu Teodorescu clarifies terms, showing how different approaches solve different problems.</p>
<blockquote>
	<h3>
		<a href="https://accu.org/journals/overload/33/190/teodorescu/">Concurrency Flavours</a></h3>
	<p>
		by Lucian Radu Teodorescu</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Most engineers today use concurrency &ndash; often without a clear understanding of what it is, why it&rsquo;s needed, or which flavour they&rsquo;re dealing with. The vocabulary around concurrency is rich but muddled. Terms like parallelism, multithreading, asynchrony, reactive programming, and structured concurrency are regularly conflated &ndash; even in technical discussions.</p>
	<p>
		This confusion isn&rsquo;t just semantic &ndash; it leads to real-world consequences. If the goal behind using concurrency is unclear, the result is often poor concurrency &ndash; brittle code, wasted resources, or systems that are needlessly hard to reason about. Choosing the right concurrency strategy requires more than knowing a framework or following a pattern &ndash; it requires understanding what kind of complexity you&rsquo;re introducing, and why.</p>
	<p>
		To help clarify this complexity, the article aims to map out some of the main flavours of concurrency. Rather than defining terms rigidly, we&rsquo;ll explore the motivations behind them &ndash; and the distinct mindsets they evoke. While this article includes a few C++ code examples (using features to be added in C++26), its focus is conceptual &ndash; distinguishing between the flavours of concurrency. Our goal is to refine the reader&rsquo;s taste for concurrency.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Fri, 26 Dec 2025 17:15:02 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Finding the Next Code Point in Unicode Strings &#45;&#45; Giovanni Dicanio</title>
      <link>https://isocpp.org//blog/2025/12/finding-the-next-code-point-in-unicode-strings-giovanni-dicanio</link>
      <guid>https://isocpp.org//blog/2025/12/finding-the-next-code-point-in-unicode-strings-giovanni-dicanio</guid>
      <description><![CDATA[<p>
	With ASCII, it&#39;s very simple to find the next character in a string: you can just increment an index (i++) or char pointer (pch++). But what happens when you have Unicode strings to process?</p>
<blockquote>
	<h3>
		<a href="https://giodicanio.com/2025/11/03/finding-the-next-unicode-code-point-in-strings-utf-8-vs-utf-16/">Finding the Next Unicode Code Point in Strings: UTF-8 vs. UTF-16</a></h3>
</blockquote>
<blockquote>
	<p>
		by Giovanni Dicanio</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Both UTF-16 and UTF-8 are variable-length encodings. In particular, UTF-8 encodes each valid Unicode code point using one to four 8-bit byte units. On the other hand, UTF-16 is somewhat simpler: In fact, Unicode code points are encoded in UTF-16 using just one or two 16-bit code units.</p>
	<p>
		(...) The functions have the following prototypes:</p>
</blockquote>
<blockquote>
	<pre class="prettyprint lang-cpp">
// Returns the next Unicode code point and number of bytes consumed.&#10;// Throws std::out_of_range if index is out of bounds or string ends prematurely.&#10;// Throws std::invalid_argument on invalid UTF-8 sequence.&#10;[[nodiscard]] std::pair&lt;char32_t, size_t&gt; NextCodePointUtf8(&#10;    const std::string&amp; str,&#10;    size_t index&#10;);&#10;&#10;// Returns the next Unicode code point and the number of UTF-16 code units consumed.&#10;// Throws std::out_of_range if index is out of bounds or string ends prematurely.&#10;// Throws std::invalid_argument on invalid UTF-16 sequence.&#10;[[nodiscard]] std::pair&lt;char32_t, size_t&gt; NextCodePointUtf16(&#10;    const std::wstring&amp; input,&#10;    size_t index&#10;);</pre>
</blockquote>
<p>
	&nbsp;</p>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Wed, 24 Dec 2025 22:13:31 +0000</pubDate>
      <dc:creator>Giovanni Dicanio</dc:creator>
    </item>

    <item>
      <title>Hardening the C++ Standard Library at massive scale &#45;&#45; Dionne, Rebert, Shavrick, and Varlamov</title>
      <link>https://isocpp.org//blog/2025/12/hardening-the-cpp-standard-library-at-massive-scale-dionne-rebert-shavrick</link>
      <guid>https://isocpp.org//blog/2025/12/hardening-the-cpp-standard-library-at-massive-scale-dionne-rebert-shavrick</guid>
      <description><![CDATA[<p>
	<img alt="acmqueue_logo.gif" src="https://isocpp.org/files/img/acmqueue_logo.gif" style="width: 160px; margin: 10px; float: right;" />Memory-safety vulnerabilities remain one of the most persistent and costly risks in large-scale C++ systems, even in well-tested production code. This article explores how hardening the C++ Standard Library&mdash;specifically LLVM&rsquo;s libc++&mdash;can deliver meaningful security and reliability gains at massive scale with minimal performance overhead.</p>
<blockquote>
	<h3>
		<a href="https://queue.acm.org/detail.cfm?id=3773097">Practical Security in Production: Hardening the C++ Standard Library at massive scale</a></h3>
	<p>
		by Louis Dionne, Alex Rebert, Max Shavrick, and Konstantin Varlamov</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Over the past few years there has been a lot of talk about memory-safety vulnerabilities, and rightly so&mdash;attackers continue to take advantage of them to achieve their objectives. Aside from security, memory unsafety can be the cause of reliability issues and is notoriously expensive to debug. Considering the billions of lines of C++ code in production today, we need to do what we can to make C++ measurably safer over the next few years with as low of an adoption barrier as possible.</p>
	<p>
		In 2019, Alex Gaynor, a security expert and one of the leading voices in memory safety, wrote a piece titled "<a href="https://alexgaynor.net/2019/apr/21/modern-c++-wont-save-us/">Modern C++ Won&#39;t Save Us</a>," where he gave examples of foundational types such as&nbsp;<code>std::optional</code>&nbsp;that were unsafe in the idiomatic use cases. What happens when these unsafe types are used beyond their contract? Well, you guessed it: undefined behavior. The&nbsp;<code>std::optional</code>&nbsp;type isn&#39;t the only one to behave like this. If you look at how this compares with modern languages, you can see that C++ is the outlier.</p>
	<p>
		So, what&#39;s to be done? Possibly one of the best places to start today is by improving our standard libraries. They provide the baseline "vocabulary types" for developers&mdash;<em>and if they&#39;re not safe</em>,<em>&nbsp;it will be tough to build safety around them</em>. The&nbsp;<code>std::optional</code>&nbsp;type is only one of many vocabulary types in the C++ Standard Library that aren&#39;t safe by default today. Given the current state, it seems mostly clear that the first step should be hardening our standard library, and in our case, this was LLVM&#39;s libc++.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Wed, 24 Dec 2025 17:12:04 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Qt acquires I.A.R.</title>
      <link>https://isocpp.org//blog/2025/12/qt-acquires-iar</link>
      <guid>https://isocpp.org//blog/2025/12/qt-acquires-iar</guid>
      <description><![CDATA[<blockquote>
	<h3>
		<a href="https://www.qt.io/stock/qt-completes-the-recommended-public-cash-offer-to-the-shareholders-of-iar-systems-group-1760351460000-3668995">Qt completes the recommended public cash offer to the shareholders of I.A.R. Systems Group</a></h3>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		On 4 July 2025, Qt Group Plc&#39;s ("Qt Group") wholly owned subsidiary The Qt Company Ltd ("The Qt Company" and together with Qt Group, "Qt"), announced a recommended public cash offer to the shareholders of class B shares (the "Shares" or, individually, a "Share") in I.A.R. Systems Group AB (publ) ("IAR"), to tender all their Shares at a price of SEK 180 in cash per Share (the "Offer"). The Shares in IAR are traded on Nasdaq Stockholm, Mid Cap. An offer document relating to the Offer was published on 15 August 2025.</p>
	<p>
		At the end of the acceptance period on 10 October 2025, the Offer had been accepted by shareholders with a total of 12,037,848 Shares in IAR, corresponding to 94.49 per cent of the outstanding shares and votes in IAR.[1] As a result, The Qt Company controls in total 12,037,848 Shares in IAR, corresponding to 94.49 per cent of the outstanding shares and votes in IAR.[2]</p>
	<p>
		The Qt Company has decided to complete the Offer. All conditions are satisfied or have been waived. Settlement for Shares tendered in the Offer during the initial acceptance period will be initiated on or around 17 October 2025.</p>
	<p>
		&nbsp;</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Tue, 23 Dec 2025 22:09:02 +0000</pubDate>
      <dc:creator>Ville Voutilainen</dc:creator>
    </item>

    <item>
      <title>A little Introduction to Control Flow Integrity &#45; James McNellis &#45; Keynote Meeting C++ 2025</title>
      <link>https://isocpp.org//blog/2025/12/a-little-introduction-to-control-flow-integrity-james-mcnellis-keynote-meet</link>
      <guid>https://isocpp.org//blog/2025/12/a-little-introduction-to-control-flow-integrity-james-mcnellis-keynote-meet</guid>
      <description><![CDATA[<p>
	Thanks to James McNellis to giving an introduction to this crutial technique for protecting C++ applications, which he has practical experience with.</p>
<blockquote>
	<p>
		<a href="https://www.youtube.com/watch?v=_eX7AVB4qzM">A little Introduction to Control Flow Integrity - James McNellis - Keynote Meeting C++ 2025</a></p>
	<p>
		by James McNellis</p>
</blockquote>
<p>
	Watch the video:</p>
<blockquote>
	<p>
		<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/_eX7AVB4qzM?si=bykXMpfJofpyvGef" title="YouTube video player" width="560"></iframe></p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Video & On-Demand, Events,]]></dc:subject>
      <pubDate>Tue, 23 Dec 2025 17:18:48 +0000</pubDate>
      <dc:creator>Meeting C++</dc:creator>
    </item>

    <item>
      <title>Event&#45;driven flows &#45;&#45; Andrzej Krzemieński</title>
      <link>https://isocpp.org//blog/2025/12/event-driven-flows-andrzej-krzemieski</link>
      <guid>https://isocpp.org//blog/2025/12/event-driven-flows-andrzej-krzemieski</guid>
      <description><![CDATA[<p>
	<img alt="2025-12-19_10-06-35.png" src="https://isocpp.org/files/img/2025-12-19_10-06-35.png" style="width: 400px; margin: 10px; float: right;" />This post is in response to two claims about coroutines: 1) Their reference function parameters may become dangling too easily, and 2) They are indistinguishable from regular functions from the declaration alone.</p>
<blockquote>
	<h3>
		<a href="https://akrzemi1.wordpress.com/2025/11/16/event-driven-flows/">Event-driven flows</a></h3>
	<p>
		by Andrzej Krzemie&#324;ski</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		A canonical example of an event-driven flow is the handling of signals in C. Signals will be risen at unpredictable points in time, so rather than actively checking for them, we define a callback and&nbsp;<em>associate</em>&nbsp;it with the indicated signal:<br />
		<br />
		<code>signal</code><code>(SIGINT, on_interrupt);</code></p>
	<div>
		<div style="clear:both;">
			&nbsp;</div>
	</div>
	<p>
		After having performed this association, we move on to doing other things. It is the&nbsp;<em>implementation</em>&nbsp;(system, or parts of the program we do not write) that will make sure to invoke the callback when the signal is risen (if at all). We can illustrate it with a diagram:</p>
	<p>
		<a href="https://akrzemi1.wordpress.com/wp-content/uploads/2025/11/event.png"><img alt="" data-attachment-id="10589" data-comments-opened="1" data-image-caption="" data-image-description="" data-image-meta="{" data-image-title="event" data-large-file="https://akrzemi1.wordpress.com/wp-content/uploads/2025/11/event.png?w=406" data-medium-file="https://akrzemi1.wordpress.com/wp-content/uploads/2025/11/event.png?w=300" data-orig-file="https://akrzemi1.wordpress.com/wp-content/uploads/2025/11/event.png" data-orig-size="406,285" data-permalink="https://akrzemi1.wordpress.com/2025/11/16/event-driven-flows/event/" height="211" sizes="(max-width: 300px) 100vw, 300px" src="https://akrzemi1.wordpress.com/wp-content/uploads/2025/11/event.png?w=300" srcset="https://akrzemi1.wordpress.com/wp-content/uploads/2025/11/event.png?w=300 300w, https://akrzemi1.wordpress.com/wp-content/uploads/2025/11/event.png?w=150 150w, https://akrzemi1.wordpress.com/wp-content/uploads/2025/11/event.png 406w" style="border:none;vertical-align:baseline;height:auto;" width="300" /></a></p>
</blockquote>
<p>
	&nbsp;</p>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Mon, 22 Dec 2025 17:07:36 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Converting Between Unicode UTF&#45;16 and UTF&#45;8 in Windows C++ Code &#45;&#45; Giovanni Dicanio</title>
      <link>https://isocpp.org//blog/2025/12/converting-between-unicode-utf-16-and-utf-8-in-windows-cpp-code-giovanni-di</link>
      <guid>https://isocpp.org//blog/2025/12/converting-between-unicode-utf-16-and-utf-8-in-windows-cpp-code-giovanni-di</guid>
      <description><![CDATA[<p>
	Very often the need arises in Windows C++ programming to convert text between Unicode UTF-16 (which historically has been the <em>native</em> Unicode encoding used by Windows APIs) and UTF-8 (which is the <em>de facto</em> standard for sending text across the Internet and exchanging text between different platforms).</p>
<blockquote>
	<h3>
		<a href="https://giodicanio.com/2025/10/27/converting-between-unicode-utf-16-and-utf-8-in-windows-c-plus-plus-code/">Converting Between Unicode UTF-16 and UTF-8 in Windows C++ Code</a></h3>
</blockquote>
<blockquote>
	<p>
		by Giovanni Dicanio</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		A detailed discussion on how to convert C++ strings between Unicode UTF-16 and UTF-8 in C++ code using Windows APIs like WideCharToMultiByte, and STL strings and string views.</p>
	<p>
		&nbsp;</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Fri, 19 Dec 2025 22:13:42 +0000</pubDate>
      <dc:creator>Giovanni Dicanio</dc:creator>
    </item>

    
    </channel>
</rss>