<?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++]]></title>
    <link>http://isocpp.org/blog</link>
    <description></description>
    <dc:language>en</dc:language>
    <dc:rights>Copyright 2025</dc:rights>
    <admin:generatorAgent rdf:resource="https://expressionengine.com/" />
    

    <item>
      <title>Structured Bindings in C++17, 8 Years Later &#45;&#45; Bartlomiej Filipek</title>
      <link>https://isocpp.org//blog/2025/10/structured-bindings-in-cpp17-8-years-later-bartlomiej-filipek</link>
      <guid>https://isocpp.org//blog/2025/10/structured-bindings-in-cpp17-8-years-later-bartlomiej-filipek</guid>
      <description><![CDATA[<p>
	<img alt="Filipek-structuredbindings.png" src="https://isocpp.org/files/img/Filipek-structuredbindings.png" style="width: 400px; margin: 10px; float: right;" />Structured binding is a C++17 feature that allows you to bind multiple variables to the elements of a structured object, such as a tuple or struct. This can make your code more concise and easier to read, especially when working with complex data structures. On this blog, we already covered this functionality, but we&rsquo;ll talk about some good C++26 additions and real code use cases.</p>
<blockquote>
	<h3>
		<a href="https://www.cppstories.com/2025/structured-bindings-cpp26-updates/">Structured bindings in C++17, 8 years later</a></h3>
	<p>
		by Bartlomiej Filipek</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		An excellent demonstration of structured bindings is an iteration through a map object.</p>
	<p>
		If you have a&nbsp;<code>std::map</code>&nbsp;of elements, you might know that internally, they are stored as pairs of&nbsp;<code>&lt;const Key, ValueType&gt;</code>.</p>
	<p>
		Now, when you iterate through elements, you can do:</p>
	<div>
		<pre tabindex="0">
<code data-lang="cpp">for (const auto&amp; elem : myMap) { ... } </code></pre>
	</div>
	<p>
		You need to write&nbsp;<code>elem.first</code>&nbsp;and&nbsp;<code>elem.second</code>&nbsp;to refer to the key and the value.</p>
	<div>
		<pre tabindex="0">
<code data-lang="cpp">std::map&lt;KeyType, ValueType&gt; myMap = getMap(); &#10;// C++14: &#10;for (const auto&amp; elem : myMap) {  &#10;     // elem.first - is the key  &#10;     // elem.second - is the value &#10;}</code></pre>
	</div>
</blockquote>
<p>
	&nbsp;</p>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Thu, 09 Oct 2025 19:43:16 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>You should use QPainterPath they said...</title>
      <link>https://isocpp.org//blog/2025/10/you-should-use-qpainterpath-they-said</link>
      <guid>https://isocpp.org//blog/2025/10/you-should-use-qpainterpath-they-said</guid>
      <description><![CDATA[<p>
	A blog entry about this years t-shirt at Meeting C++ 2025 and exploring QPainterPath for it.</p>
<blockquote>
	<h2>
		<a href="https://meetingcpp.com/blog/items/You-should-use-QPainterPath-they-said---.html">You should use QPainterPath they said...</a></h2>
	<p>
		by Jens Weller</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		This post is about what I learned while playing around with QPainterPath for this years t-shirt at Meeting C++ 2025 sponsored by Hudson River Trading.</p>
	<p>
		One of the issues from last years t-shirt was when using drawText from QPainter, one does not really *draw* text in an svg exported. Instead you&#39;ll get the text and the font kinda embedded in an svg. What good is that in a vector graphic? This was a bit of a surprise when I ran into issues with this last year during printing. While this could be solved with the printing company picking a different font, it would have been also solved by using QPainterPath. At least this was the feedback from some of the Qt experts present onsite or online...</p>
	<p>
		&nbsp;</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Wed, 08 Oct 2025 17:22:39 +0000</pubDate>
      <dc:creator>Meeting C++</dc:creator>
    </item>

    <item>
      <title>Final call for sponsors for Meeting C++ 2025</title>
      <link>https://isocpp.org//blog/2025/10/final-call-for-sponsors-for-meeting-cpp-2025</link>
      <guid>https://isocpp.org//blog/2025/10/final-call-for-sponsors-for-meeting-cpp-2025</guid>
      <description><![CDATA[<p>
	With <a href="https://meetingcpp.com/2025/">Meeting C++ 2025</a> coming closer, we&#39;re doing a last round of onboarding for sponsors</p>
<blockquote>
	<h2>
		<a href="https://meetingcpp.com/meetingcpp/news/items/Final-call-for-sponsors-for-Meeting-Cpp-2025.html">Final call for sponsors for Meeting C++ 2025</a></h2>
	<p>
		by Jens Weller</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		With Meeting C++ 2025 just being 5 weeks away, I share a call for sponsors with you.</p>
	<p>
		Maybe your employer is interested in being present as a sponsor at this years Meeting C++ conference? Have you thought about the possibilty that you could have your employer sponsor Meeting C++ 2025?</p>
	As an organization Meeting C++ gets its funding through sponsorship and ticket sales for the conference mostly.</blockquote>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Mon, 06 Oct 2025 20:05:37 +0000</pubDate>
      <dc:creator>Meeting C++</dc:creator>
    </item>

    <item>
      <title>How to Look up Values in a Map &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2025/10/how-to-look-up-values-in-a-map-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2025/10/how-to-look-up-values-in-a-map-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;" />Whether you&rsquo;re in a coding interview or writing production code, you&rsquo;ll eventually face the question:&nbsp;<em>What&rsquo;s the right way to look up values in a&nbsp;<code>std::map</code>&nbsp;or&nbsp;<code>std::unordered_map</code>?</em>&nbsp;For simplicity, we&rsquo;ll refer to both containers as&nbsp;<em>maps</em>&nbsp;in this post.</p>
<blockquote>
	<h3>
		<a href="https://www.sandordargo.com/blog/2025/08/27/lookup-value-in-map">How to Look up Values in a Map</a></h3>
	<p>
		by Sandor Dargo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Let&rsquo;s explore the different options &mdash; along with their pros and cons.</p>
	<p id="operator">
		<strong><code>operator[]</code></strong></p>
	<p>
		Using&nbsp;<code>operator[]</code>&nbsp;is the old-fashioned way to access elements of a map. It takes a key and returns a reference to the corresponding value. The complexity is&nbsp;<em>log(n)</em>&nbsp;for&nbsp;<code>std::map</code>&nbsp;and&nbsp;<em>average constant time</em>&nbsp;(with worst-case linear) for&nbsp;<code>std::unordered_map</code>.</p>
	<p>
		However, there&rsquo;s a big caveat.</p>
	<p>
		What if the key is not present in the map?</p>
	<p>
		Unlike a&nbsp;<code>vector</code>&nbsp;&mdash; where accessing an invalid index with&nbsp;<code>operator[]</code>&nbsp;leads to undefined behavior &mdash; a&nbsp;<code>map</code>&nbsp;will instead insert a new entry with the given key and a default-constructed value. This side effect makes&nbsp;<code>operator[]</code>&nbsp;unsafe for lookups where insertion is not desired.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Wed, 01 Oct 2025 19:39:59 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Safely passing strings and string_views &#45;&#45; Niek J Bouman</title>
      <link>https://isocpp.org//blog/2025/09/safely-passing-strings-and-string_views</link>
      <guid>https://isocpp.org//blog/2025/09/safely-passing-strings-and-string_views</guid>
      <description><![CDATA[<p>
	Passing a string temporary into a string_view can make the latter dangling&nbsp;</p>
<blockquote>
	<h3>
		<a href="https://niekbouman.blogspot.com/2025/07/safely-passing-stdstrings-and.html">Safely passing std::strings and std::string_view</a></h3>
</blockquote>
<blockquote>
	<p>
		by Niek J Bouman</p>
</blockquote>
<p>
	<em>From the article:</em></p>
<blockquote>
	<p>
		Many of you will agree that C++ is a language that comes with sharp edges. One example is `std::string_view`; introduced as a type to prevent unnecessary std::string-copies, but it introduces a new footgun, namely when passing a temporary string into it:</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Sat, 27 Sep 2025 21:01:08 +0000</pubDate>
      <dc:creator>niekb</dc:creator>
    </item>

    <item>
      <title>A safer C++ pointer class &#45;&#45; Niek J. Bouman</title>
      <link>https://isocpp.org//blog/2025/09/a-safer-cpp-pointer-class-niek-bouman</link>
      <guid>https://isocpp.org//blog/2025/09/a-safer-cpp-pointer-class-niek-bouman</guid>
      <description><![CDATA[<p>
	Sometimes some object A needs to interact with another object B, e.g., A calls one of B&rsquo;s methods. In a language like C++, it is left to the programmer to assure that B outlives A; if B happens to be already destructed, this would be a use-after-free bug. Managing object lifetimes can be tricky, especially with asynchronous code.</p>
<blockquote>
	<h3>
		<a href="https://techblog.rosemanlabs.com/c++/safety/object-lifetime/2025/08/28/a-safe-pointer-that-protects-against-use-after-free-and-updates-when-the-pointee-is-moved.html">A safe pointer in C++ that protects against use after free and updates when the pointee is moved</a></h3>
	<p>
		by Niek J. Bouman</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		We propose a design for a safe pointer to an object of type T that is weak in that it does not have ownership semantics, and gets notified in case the pointee is either destructed or moved.</p>
	<p>
		We will pay a price at runtime for these extra guarantees in terms of a small heap-allocated state, a double pointer indirection when accessing the pointee (comparable to a virtual function call), and a check against nullptr.</p>
	<p>
		The main idea of our design is to internally use a <code>std::shared_ptr&lt;T*&gt;</code> to share ownership of a (heap-allocated) pointer T*. The ownership is shared by the pointee and all <code>safe_ptr&lt;T&gt;</code> instances. The pointee type T must derive from the base class <code>safe_ptr_factory</code> (templated on T, using the Curiously Recurring Template Pattern) with a destructor that automatically notifies the shared state about destruction by setting T* to <code>nullptr</code>, and with a move constructor and move assignment operator that update T* to the new this pointer (which we must properly cast with <code>static_cast&lt;T*&gt;</code>). The double indirection thus comes from having to dereference the <code>shared_ptr</code> to obtain an ordinary pointer T*, after which you must dereference once more to access the pointee. You might recognize an instance of Gang-of-Four&rsquo;s observer pattern in our design.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Sat, 27 Sep 2025 20:59:03 +0000</pubDate>
      <dc:creator>niekb</dc:creator>
    </item>

    <item>
      <title>Linus Torvalds and the Supposedly Garbage Code &#45;&#45; Giovanni Dicanio</title>
      <link>https://isocpp.org//blog/2025/09/linus-torvalds-and-the-supposedly-garbage-code-giovanni-dicanio</link>
      <guid>https://isocpp.org//blog/2025/09/linus-torvalds-and-the-supposedly-garbage-code-giovanni-dicanio</guid>
      <description><![CDATA[<p>
	Some reflections on a harsh critic by Linus Torvalds on a RISC-V Linux kernel contribution.&nbsp;</p>
<blockquote>
	<h3>
		<a href="https://giodicanio.com/2025/08/27/linus-torvalds-and-the-supposedly-garbage-code/">Linus Torvalds and the Supposedly &ldquo;Garbage Code&rdquo;</a></h3>
</blockquote>
<blockquote>
	<p>
		by Giovanni Dicanio</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		So, the correct explicit code is not something as simple as &ldquo;(a &lt;&lt; 16) + b&rdquo;.</p>
	<p>
		[...]&nbsp;As you can see, the type casts, the parentheses, the potential bit-masking, do require attention. But once you get the code right, you can safely and conveniently reuse it every time you need!</p>
</blockquote>
<p>
	&nbsp;</p>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Sat, 27 Sep 2025 20:54:24 +0000</pubDate>
      <dc:creator>Giovanni Dicanio</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Trip Report – tipi.build by EngFlow</title>
      <link>https://isocpp.org//blog/2025/09/cppcon-2025-trip-report-tipi.build-by-engflow</link>
      <guid>https://isocpp.org//blog/2025/09/cppcon-2025-trip-report-tipi.build-by-engflow</guid>
      <description><![CDATA[<p>
	CppCon 2025 was packed with exciting talks, deep dives, and great conversations.</p>
<blockquote>
	<h3>
		<a href="https://tipi.build/blog/20250925-CppCon2025">CppCon 2025 Trip Report</a></h3>
	<p>
		by&nbsp;tipi.build by EngFlow</p>
</blockquote>
<p>
	About the report</p>
<blockquote>
	<p>
		tipi.build by EngFlow attended both as a developer team and as a CppCon sponsor. Discover in our trip report the highlights from the sessions we attended and the talks we gave, How monday&rsquo;s afternoon break started with ice cream + key takeaways and resources if you&rsquo;d like to dive deeper.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books, Events,]]></dc:subject>
      <pubDate>Sat, 27 Sep 2025 20:50:20 +0000</pubDate>
      <dc:creator>daminetreg</dc:creator>
    </item>

    <item>
      <title>C++26: Concept and variable&#45;template template&#45;parameters &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2025/09/cpp26-concept-and-variable-template-template-parameters-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2025/09/cpp26-concept-and-variable-template-template-parameters-sandor-dargo</guid>
      <description><![CDATA[<p>
	<img alt="SANDOR_DARGO_ROUND.JPG" src="https://isocpp.org/files/img/SANDOR_DARGO_ROUND.JPG" style="width: 150px; margin: 10px; float: right; height: 153px;" />Last week,&nbsp;<a href="https://www.sandordargo.com/blog/2025/08/13/use-concepts-with-remove_cvref">we discussed why we should sometimes use&nbsp;<code>remove_cvref_t</code>&nbsp;on our template parameters before applying concepts to them</a>. We also saw that the solution is not super readable because we lose access to the terse, shorthand syntax.</p>
<blockquote>
	<h3>
		<a href="https://www.sandordargo.com/blog/2025/08/20/cpp26-P2841">C++26: Concept and variable-template template-parameters</a></h3>
	<p>
		by Sandor Dargo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		C++ already allows passing templates as template parameters, but only if they are class templates. A common reason for doing this is to allow higher-level abstractions. For instance, you may want to pass in a container template like&nbsp;<code>std::vector</code>, without specifying the type it contains.</p>
	<p>
		Jason Turner explains this well in&nbsp;<a href="https://www.youtube.com/watch?v=s6Cub7EFLXo">C++ Weekly - Ep 368 - The Power of template-template Parameters: A Basic Guide</a>, but here&rsquo;s his example for quick reference:</p>
	<pre class="prettyprint lang-cpp">
template&lt;template &lt;typename Contained, typename Alloc = std::allocator&lt;Contained&gt;&gt;&#10;&#9;&#9; typename ResultType&gt;&#10;auto get_data() {&#10;&#9;ResultType&lt;double&gt; result;&#10;&#9;// ...&#10;&#9;return result;&#10;}&#10;&#10;int main() {&#10;&#9;auto data = get_data&lt;std::vector&gt;();&#10;}</pre>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Thu, 25 Sep 2025 22:20:21 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Highlighting the student and support tickets for Meeting C++ 2025</title>
      <link>https://isocpp.org//blog/2025/09/highlighting-the-student-and-support-tickets-for-meeting-cpp-2025</link>
      <guid>https://isocpp.org//blog/2025/09/highlighting-the-student-and-support-tickets-for-meeting-cpp-2025</guid>
      <description><![CDATA[<p>
	Meeting C++ is offering online and onsite student and support tickets for this years conference!</p>
<blockquote>
	<h2>
		<a href="https://meetingcpp.com/meetingcpp/news/items/Highlighting-the-student-and-support-tickets-for-Meeting-Cpp-2025.html">Highlighting the student and support tickets for Meeting C++ 2025</a></h2>
	<p>
		by Jens Weller</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		I&#39;d like to point towards the programs for those that can&#39;t afford to pay for a ticket for Meeting C++ 2025: the programs for the student and support tickets.</p>
	<p>
		And let me start with thanking those that enable these programs through their ticket buying: the attendees and sponsors of Meeting C++ 2025! With the schedule published, I&#39;d like to highlight the student and support tickets for Meeting C++ 2025. For a few years now Meeting C++ has hosted programs to give students, underrepresented folks and those who can&#39;t afford a ticket access to the conference.</p>
	<p>
		&nbsp;</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Thu, 25 Sep 2025 14:30:24 +0000</pubDate>
      <dc:creator>Meeting C++</dc:creator>
    </item>

    <item>
      <title>Use concepts with std::remove_cvref_t &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2025/09/use-concepts-with-stdremove-cvref-t-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2025/09/use-concepts-with-stdremove-cvref-t-sandor-dargo</guid>
      <description><![CDATA[<p>
	<img alt="SANDOR_DARGO_ROUND.JPG" src="https://isocpp.org/files/img/SANDOR_DARGO_ROUND.JPG" style="width: 150px; margin: 10px; float: right; height: 153px;" />Let&rsquo;s talk about templates, constraints, and concepts. We&rsquo;ll start with a quick reminder of why concepts are essential when working with templates. Then we&rsquo;ll dive into the challenge posed by reference-qualified types and finish with a practical solution.</p>
<blockquote>
	<h3>
		<a href="https://www.sandordargo.com/blog/2025/08/13/use-concepts-with-remove_cvref">Use concepts with std::remove_cvref_t</a></h3>
	<p>
		by Sandor Dargo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		By now, it&rsquo;s well known that using unconstrained templates is discouraged. Even the C++ Core Guidelines strongly recommend against it.</p>
	<p>
		<a href="https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#t47-avoid-highly-visible-unconstrained-templates-with-common-names">T.47</a>&nbsp;only advises avoiding highly visible unconstrained templates with common names due to the risks of argument-dependent lookup going wrong.&nbsp;<a href="https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#t10-specify-concepts-for-all-template-arguments">T.10</a>&nbsp;goes further, recommending that we specify concepts for every template argument to improve both simplicity and readability.</p>
	<p>
		The same idea appears in&nbsp;<a href="https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i9-if-an-interface-is-a-template-document-its-parameters-using-concepts">I.9</a>, which suggests documenting template parameters using concepts.</p>
	<p>
		It&rsquo;s hard to argue with these guidelines. Concepts make code more readable &mdash; just by looking at a function, class, or variable template, the reader can immediately tell what kinds of types are accepted.</p>
	<blockquote>
		<p>
			<em>If you want to learn more about concepts, check out my&nbsp;<a href="https://www.sandordargo.com/tags/concepts/">concepts-related articles</a>&nbsp;or&nbsp;<a href="https://www.sandordargo.com/books/cpp_concepts/">my book on concepts</a>.</em></p>
	</blockquote>
	<p>
		But what makes a good concept? That&rsquo;s a more complex topic &mdash; and one we can&rsquo;t fully cover in a single article.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Tue, 23 Sep 2025 22:17:57 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Simple Compile&#45;Time Dynamic Programming in Modern C++ &#45;&#45; Andrew Drakeford</title>
      <link>https://isocpp.org//blog/2025/09/simple-compile-time-dynamic-programming-in-modern-cpp-andrew-drakeford</link>
      <guid>https://isocpp.org//blog/2025/09/simple-compile-time-dynamic-programming-in-modern-cpp-andrew-drakeford</guid>
      <description><![CDATA[<p>
	<img alt="logo.png" src="https://isocpp.org/files/img/logo.png" style="width: 225px; margin: 10px; float: right;" />Compile time code can be very efficient. Andrew Drakeford demonstrates how to write efficient chains of matrix multiplication.</p>
<blockquote>
	<h3>
		<a href="https://accu.org/journals/overload/33/188/drakeford/">Simple Compile-Time Dynamic Programming in Modern C++</a></h3>
	<p>
		by Andrew Drakeford</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Modern C++ enables us to solve mathematical optimisation problems at compile time. With the expanded constexpr capabilities [<a href="https://accu.org/journals/overload/33/188/drakeford/#_idTextAnchor002">Fertig21</a>,&nbsp;<a href="https://accu.org/journals/overload/33/188/drakeford/#_idTextAnchor004">Turner18</a>,&nbsp;<a href="https://accu.org/journals/overload/33/188/drakeford/#_idTextAnchor005">Turner19</a>,&nbsp;<a href="https://accu.org/journals/overload/33/188/drakeford/#_idTextAnchor006">Wu24</a>], we can now write clear and efficient optimisation logic that runs during compilation. Fixed-size containers such as&nbsp;<code>std::array</code>&nbsp;fit naturally into these routines. Even standard algorithms, such as&nbsp;<code>std::sort</code>&nbsp;and&nbsp;<code>std::lower_bound</code>, are now constexpr, enabling more straightforward code and more powerful compile-time computations. Additionally, compile-time optimisation generates constant results, which enables the compiler to create even more efficient code. We will use the matrix chain multiplication problem as our worked example.</p>
	<p>
		<strong>Matrix chain multiplication</strong></p>
	<p>
		Matrix chain multiplication is a classic&nbsp;<em>dynamic programming</em>&nbsp;problem [<a href="https://accu.org/journals/overload/33/188/drakeford/#_idTextAnchor000">Corman22</a>,&nbsp;<a href="https://accu.org/journals/overload/33/188/drakeford/#_idTextAnchor001">Das19</a>,&nbsp;<a href="https://accu.org/journals/overload/33/188/drakeford/#_idTextAnchor003">Mount</a>]. It aims to determine the most efficient method for multiplying a sequence of matrices. Since matrix multiplication is associative, the order of grouping does not affect the result. However, the number of scalar multiplications involved can vary depending on the grouping.</p>
	<p>
		Consider the three matrices&nbsp;A&#8321;&nbsp;(10&times;100),&nbsp;A&#8322;&nbsp;(100&times;5), and&nbsp;A&#8323;&nbsp;(5&times;50), multiplied in a chain,&nbsp;A&#8321; &times; A&#8322; &times; A&#8323;.</p>
	<p>
		There are two ways to multiply them:</p>
	<ol>
		<li>
			Grouping as (A&#8321; &times; A&#8322;) &times; A&#8323;&nbsp;first computes a 10&times;5 matrix, then multiplies that with&nbsp;A&#8323;. This results in 5,000 operations for the first multiplication, and another 2,500 for the second &ndash; a total of 7,500 scalar multiplications.</li>
		<li>
			Grouping as A&#8321; &times; (A&#8322; &times; A&#8323;)&nbsp;first multiplies&nbsp;A&#8322;&nbsp;and&nbsp;A&#8323;, then&nbsp;A&#8321;. This results in 25,000 operations for the first step and 50,000 for the second &ndash; a total of 75,000, which is clearly worse.</li>
	</ol>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Fri, 19 Sep 2025 22:15:15 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>C++26 reflection at compile&#45;time &#45;&#45; Andreas Fertig</title>
      <link>https://isocpp.org//blog/2025/09/cpp26-reflection-at-compile-time-andreas-fertig</link>
      <guid>https://isocpp.org//blog/2025/09/cpp26-reflection-at-compile-time-andreas-fertig</guid>
      <description><![CDATA[<p>
	<img alt="797f4c8c0b89b22b.png" src="https://isocpp.org/files/img/797f4c8c0b89b22b.png" style="width: 150px; margin: 10px; float: right; height: 150px;" />In today&#39;s post, I like to talk about C++26 and one of the probably most impactful features that have been added to the working draft. While C++26 is still some months away from official completion, since the WG21 summer meeting in June we all now know what will be in C++26.</p>
<blockquote>
	<h3>
		<a href="https://andreasfertig.com/blog/2025/08/cpp26-reflection-at-compile-time/">C++26 reflection at compile-time</a></h3>
	<p>
		by Andreas Fertig</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		While the new standard will have plenty of great improvements the one that will most likely change a lot is reflection at compile-time! In Sofia we voted seven reflection papers into C++26:</p>
	<ul>
		<li>
			<a href="https://wg21.link/P1306R5" target="_blank">P1306R5</a>&nbsp;<em>Expansion statements</em></li>
		<li>
			<a href="https://wg21.link/P2996R13" target="_blank">P2996R13</a>&nbsp;<em>Reflection for C++26</em></li>
		<li>
			<a href="https://wg21.link/P3096R12" target="_blank">P3096R12</a>:&nbsp;<em>Function parameter reflection in reflection for C++26</em></li>
		<li>
			<a href="https://wg21.link/P3293R3" target="_blank">P3293R3</a>:&nbsp;<em>Splicing a base class subobject</em></li>
		<li>
			<a href="https://wg21.link/P3394R4" target="_blank">P3394R4</a>:&nbsp;<em>Annotations for reflection</em></li>
		<li>
			<a href="https://wg21.link/P3491R3" target="_blank">P3491R3</a>:&nbsp;<em string_object_array="string,object,array">define_static</em>_</li>
		<li>
			<a href="https://wg21.link/P3560R2" target="_blank">P3560R2</a>:&nbsp;<em>Error handling in reflection</em></li>
	</ul>
	<p>
		The papers above should give you enough to read for your vacation. I&#39;ll leave that theoretical study up to you for now.</p>
	<p>
		<strong>Let&#39;s talk practical</strong></p>
	<p>
		The main question is, what can you do with that new feature? Well, I&#39;m not the first one who published their ideas.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Wed, 17 Sep 2025 22:10:14 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Format your own type (Part 2) &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2025/09/format-your-own-type-part-2-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2025/09/format-your-own-type-part-2-sandor-dargo</guid>
      <description><![CDATA[<p>
	<img alt="SANDOR_DARGO_ROUND.JPG" src="https://isocpp.org/files/img/SANDOR_DARGO_ROUND.JPG" style="width: 150px; margin: 10px; float: right; height: 153px;" />Previously, we discussed&nbsp;<a href="https://www.sandordargo.com/blog/2025/07/23/format-your-own-type-part-1">how to write our own formatter</a>&nbsp;and finished with a relatively simple solution for printing a struct called&nbsp;<code>ProgrammingLanguage</code>. Today, we&rsquo;ll take it to the next level.</p>
<blockquote>
	<h3>
		<a href="https://www.sandordargo.com/blog/2025/07/30/format-your-own-type-part-2">Format your own type (Part 2)</a></h3>
	<p>
		by Sandor Dargo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p id="add-more-options-for-semantic-versioning">
		<strong>Add more options for semantic versioning</strong></p>
	<p>
		Let&rsquo;s dream big. Instead of only handling major and minor versions (like Python 3.12), let&rsquo;s aim to fully support&nbsp;<a href="https://semver.org/">semantic versioning</a>.</p>
	<blockquote>
		<p>
			Semantic versioning (SemVer) is a versioning scheme that conveys meaning about the underlying changes in a release. It typically consists of three parts:&nbsp;<em>MAJOR.MINOR.PATCH</em>.</p>
	</blockquote>
	<p>
		We should be able to print all these correctly:</p>
	<pre class="prettyprint lang-cpp">
ProgrammingLanguage cpp{"C++", 20};&#10;ProgrammingLanguage python312{"Python", 3, 12};&#10;ProgrammingLanguage python31211{"Python", 3, 12, 11};&#10;&#10;&#10;std::cout &lt;&lt; std::format("{:%n%v} is fun", cpp) &lt;&lt; &#39;\n&#39;;&nbsp; // C++20 is fun&#10;std::cout &lt;&lt; std::format("{:%n %v} is fun", python312) &lt;&lt; &#39;\n&#39;;&nbsp; // Python 3.12 is fun&#10;std::cout &lt;&lt; std::format("{:%n %v} is fun", python31211) &lt;&lt; &#39;\n&#39;;&nbsp; // Python 3.12.11 is fun</pre>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Mon, 15 Sep 2025 22:07:32 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 The Programmer CEO &#45;&#45; Greg Law</title>
      <link>https://isocpp.org//blog/2025/09/cppcon-2025-the-programmer-ceo-greg-law</link>
      <guid>https://isocpp.org//blog/2025/09/cppcon-2025-the-programmer-ceo-greg-law</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/d/59/3245682/avatar.jpg?b86" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bPm/the-programmer-ceo">The Programmer CEO</a></h3>
	<p>
		Wednesday, September 17 16:45 - 17:45 MDT</p>
	<p>
		by Greg Law</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Many programmers think about starting a company. It&rsquo;s often not about getting rich so much as to pursue a vision for a computer program that is much bigger than one person could write alone. Like most programmers who start up, I had no formal training and little experience outside of software development. I was naively confident, and didn&rsquo;t know what I didn&rsquo;t know (it turned out that that was a LOT!)</p>
	<p>
		The talk includes some of the lessons I&rsquo;ve learned along the way, many of which were a complete surprise. I&rsquo;ll cover getting investment, building the product, building a team, and getting and keeping customers. Little of this talk is directly about programming, but it is aimed at programmers who want to create code in order to create a business, or who want to create a business so that they can create the code they want.</p>
	<p>
		Much of the content is also relevant for programmers who find themselves doing non-programming tasks, such as managing people or customer-facing roles, and anyone working at a start-up. Contains candid, warts-and-all war stories, and because it&rsquo;s for programmers, comes with a no adverts and no business-talk BS guarantee.</p>
</blockquote>
<p>
	Greg is co-founder and CEO at Undo. He is a programmer at heart, but likes to keep one foot in the software world and one in the business world. Greg finds it particularly rewarding to turn innovative software technology into a real business. Greg has over 25 years&#39; experience in innovative start-up software companies.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Fri, 12 Sep 2025 20:47:57 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Engineers Are Users Too: Case Study in Design Thinking for Infrastructure &#45;&#45; Grace Alwan</title>
      <link>https://isocpp.org//blog/2025/09/cppcon-2025-engineers-are-users-too-case-study-in-design-thinking-for-infra</link>
      <guid>https://isocpp.org//blog/2025/09/cppcon-2025-engineers-are-users-too-case-study-in-design-thinking-for-infra</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/a/fe/23329207/avatar.jpg?98c" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bOr/engineers-are-users-too-a-case-study-in-design-thinking-for-infrastructure">Engineers Are Users Too: A Case Study in Design Thinking for Infrastructure</a></h3>
	<p>
		Tuesday, September 16 15:15 - 16:15 MDT</p>
	<p>
		by Grace Alwan</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Bringing together strong engineering skills with a foundation in UX Design can open unexpected doors&mdash;especially in fields like infrastructure, where there are few engineers trained in design. As a software engineer on an infrastructure team at a fintech company, I work on low-level systems that power how engineers manage compute at scale. But it&rsquo;s my background in UX and human-computer interaction that&rsquo;s made me an invaluable asset. By applying design thinking to infrastructure &ndash; through prototyping, user interviews, and iteration &ndash; I transformed a complex internal workflow and quickly became a subject matter expert.</p>
	<p>
		This talk will walk you through that journey and give you the tools to be a design trailblazer in your own career. You&#39;ll leave with practical techniques for integrating empathy and user-centric thinking into deeply technical work&mdash;and insights on how expanding your skillset can accelerate your growth as a C++ or systems engineer.</p>
</blockquote>
<p>
	Grace Alwan graduated from Stanford University in 2023, where she got her BS and MS in Computer Science specializing in Human-Computer Interaction. She is now a software engineer in the Technology Infrastructure org at Bloomberg, where she works on cluster and host management.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Thu, 11 Sep 2025 20:43:09 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>2025&#45;09 Mailing Available</title>
      <link>https://isocpp.org//blog/2025/09/2025-09-mailing-available</link>
      <guid>https://isocpp.org//blog/2025/09/2025-09-mailing-available</guid>
      <description><![CDATA[<p>The 2025-09 mailing of new standards papers is now available.</p>
<p>&nbsp;</p>
<table border="1" summary="See previous paragraph.">
	<thead>
        <tr>
            <th>WG21 Number</th>
            <th>Title</th>
            <th>Author</th>
            <th>Document Date</th>
            <th>Mailing Date</th>
            <th>Previous Version</th>
            <th>Subgroup</th>
<!--            <th>Disposition</th> -->
        </tr>
</thead>
<tbody>

	<tr>
		<td><a href="https://wg21.link/N5020">N5020</a> </td>
		<td>2026-11 Rio De Janeiro, Brazil</td>
		<td>Matheus Izvekov</td>
		<td>2025-09-10</td>
		<td>2025-09</td>
		<td></td>
		<td>All of WG21</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P2953R2">P2953R2</a> </td>
		<td>Forbid defaulting operator=(X&amp;&amp;) &amp;&amp;</td>
		<td>Arthur O'Dwyer</td>
		<td>2025-09-02</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/P2953R1">P2953R1</a></td>
		<td>EWGI SG17: EWG Incubator</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3347R5">P3347R5</a> </td>
		<td>Invalid/Prospective Pointer Operations</td>
		<td>Paul E. McKenney</td>
		<td>2025-08-27</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/P3347R4">P3347R4</a></td>
		<td>CWG Core</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3567R1">P3567R1</a> </td>
		<td>`flat_meow` Fixes</td>
		<td>Hui Xie</td>
		<td>2025-09-06</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/P3567R0">P3567R0</a></td>
		<td>LWG Library</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3579R2">P3579R2</a> </td>
		<td>Fix matching of constant template parameters when matching template template parameters</td>
		<td>Matheus Izvekov</td>
		<td>2025-09-10</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/P3579R1">P3579R1</a></td>
		<td>CWG Core</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3612R0">P3612R0</a> </td>
		<td>Harmonize proxy-reference operations (LWG 3638 and 4187)</td>
		<td>Arthur O'Dwyer</td>
		<td>2025-09-02</td>
		<td>2025-09</td>
		<td></td>
		<td>LWG Library</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3666r0">P3666r0</a> </td>
		<td>Bit-precise integers</td>
		<td>Jan Schultke</td>
		<td>2025-09-11</td>
		<td>2025-09</td>
		<td></td>
		<td>SG6 Numerics,SG22 Compatibility,EWG Evolution,LEWG Library Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3688R3">P3688R3</a> </td>
		<td>ASCII character utilities</td>
		<td>Jan Schultke</td>
		<td>2025-09-09</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/P3688R2">P3688R2</a></td>
		<td>SG16 Unicode</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3695R1">P3695R1</a> </td>
		<td>Deprecate implicit conversions between Unicode character types</td>
		<td>Jan Schultke</td>
		<td>2025-09-09</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/P3695R0">P3695R0</a></td>
		<td>SG16 Unicode,EWG Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3702R2">P3702R2</a> </td>
		<td>Stricter requirements for document submissions (SD-7)</td>
		<td>Jan Schultke</td>
		<td>2025-09-10</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/P3702R1">P3702R1</a></td>
		<td>All of WG21</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3754R1">P3754R1</a> </td>
		<td>Slides for P3100R2 presentation to EWG</td>
		<td>Timur Doumler</td>
		<td>2025-08-21</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/P3754R0">P3754R0</a></td>
		<td>EWG Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3776R0">P3776R0</a> </td>
		<td>More trailing commas</td>
		<td>Jan Schultke</td>
		<td>2025-08-26</td>
		<td>2025-09</td>
		<td></td>
		<td>EWG Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3776R1">P3776R1</a> </td>
		<td>More trailing commas</td>
		<td>Jan Schultke</td>
		<td>2025-09-09</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/P3776R0">P3776R0</a></td>
		<td>EWG Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3784R1">P3784R1</a> </td>
		<td>range-if</td>
		<td>Michael Florian Hava</td>
		<td>2025-09-10</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/P3784R0">P3784R0</a></td>
		<td>EWGI SG17: EWG Incubator</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3786R0">P3786R0</a> </td>
		<td>Tuple protocol for fixed-size spans</td>
		<td>Michael Florian Hava</td>
		<td>2025-08-21</td>
		<td>2025-09</td>
		<td></td>
		<td>LEWG Library Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3811R0">P3811R0</a> </td>
		<td>default comparison memory safety</td>
		<td>Jarrad J Waterloo</td>
		<td>2025-08-15</td>
		<td>2025-09</td>
		<td></td>
		<td>SG23 Safety and Security</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3812R0">P3812R0</a> </td>
		<td>const and &amp; in default member functions</td>
		<td>Jarrad J Waterloo</td>
		<td>2025-08-16</td>
		<td>2025-09</td>
		<td></td>
		<td>EWG Evolution,CWG Core</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3813R0">P3813R0</a> </td>
		<td>execution::task::valueless()</td>
		<td>Michael Florian Hava</td>
		<td>2025-09-10</td>
		<td>2025-09</td>
		<td></td>
		<td>LEWG Library Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3815R0">P3815R0</a> </td>
		<td>Add scope_association concept to P3149</td>
		<td>Jessica Wong</td>
		<td>2025-09-01</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/"></a></td>
		<td>All of WG21</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3816R0">P3816R0</a> </td>
		<td>Hashing meta::info</td>
		<td>Matt Cummins</td>
		<td>2025-09-01</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/"></a></td>
		<td>SG7 Reflection,LEWG Library Evolution,LWG Library,All of WG21</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3818R0">P3818R0</a> </td>
		<td>constexpr exception fix for potentially constant initialization</td>
		<td>Hana Dusíková</td>
		<td>2025-08-31</td>
		<td>2025-09</td>
		<td></td>
		<td>LEWG Library Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3818R1">P3818R1</a> </td>
		<td>constexpr exception fix for potentially constant initialization</td>
		<td>Hana Dusíková</td>
		<td>2025-09-09</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/P3818R0">P3818R0</a></td>
		<td>LEWG Library Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3819R0">P3819R0</a> </td>
		<td>Remove evaluation_exception() from contract-violation handling for C++26</td>
		<td>Peter Bindels</td>
		<td>2025-09-05</td>
		<td>2025-09</td>
		<td></td>
		<td>LEWG Library Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3820R0">P3820R0</a> </td>
		<td>Split constexpr uncaught_exceptions into distinct runtime and consteval functions</td>
		<td>Lénárd Szolnoki</td>
		<td>2025-08-31</td>
		<td>2025-09</td>
		<td></td>
		<td>LEWG Library Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3820R1">P3820R1</a> </td>
		<td>Fix constexpr uncaught_exceptions and current_exception</td>
		<td>Lénárd Szolnoki</td>
		<td>2025-09-06</td>
		<td>2025-09</td>
		<td><a href="https://wg21.link/P3820R0">P3820R0</a></td>
		<td>LEWG Library Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3822R0">P3822R0</a> </td>
		<td>Conditional noexcept specifiers in compound requirements</td>
		<td>Viacheslav Luchkin</td>
		<td>2025-09-01</td>
		<td>2025-09</td>
		<td></td>
		<td>EWGI SG17: EWG Incubator,EWG Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3823R0">P3823R0</a> </td>
		<td>Wording for US NB comment 10</td>
		<td>Arthur O'Dwyer</td>
		<td>2025-09-10</td>
		<td>2025-09</td>
		<td></td>
		<td>EWG Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3824R0">P3824R0</a> </td>
		<td>Static storage for braced initializers NBC examples</td>
		<td>Jarrad J Waterloo</td>
		<td>2025-09-06</td>
		<td>2025-09</td>
		<td></td>
		<td>SG23 Safety and Security,CWG Core</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3827R0">P3827R0</a> </td>
		<td>Wording for US NB comment 9</td>
		<td>Arthur O'Dwyer</td>
		<td>2025-09-10</td>
		<td>2025-09</td>
		<td></td>
		<td>EWG Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3829R0">P3829R0</a> </td>
		<td>Contracts do not belong in the language</td>
		<td>David Chisnall</td>
		<td>2025-09-03</td>
		<td>2025-09</td>
		<td></td>
		<td>EWG Evolution,CWG Core,LWG Library</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3830R0">P3830R0</a> </td>
		<td>NB-Commenting is Not a Vehicle for Redesigning inplace_vector</td>
		<td>Nevin Liber</td>
		<td>2025-09-03</td>
		<td>2025-09</td>
		<td></td>
		<td>LEWG Library Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3831R0">P3831R0</a> </td>
		<td>Contract Labels Should Use Annotation Syntax</td>
		<td>Yihe Li</td>
		<td>2025-09-06</td>
		<td>2025-09</td>
		<td></td>
		<td>SG21 Contracts</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3832R0">P3832R0</a> </td>
		<td>Timed lock algorithms for multiple lockables</td>
		<td>Ted Lyngmo</td>
		<td>2025-09-06</td>
		<td>2025-09</td>
		<td></td>
		<td>LEWGI SG18: LEWG Incubator</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3834R0">P3834R0</a> </td>
		<td>Defaulting the Compound Assignment Operators</td>
		<td>Matthew Taylor</td>
		<td>2025-09-10</td>
		<td>2025-09</td>
		<td></td>
		<td>EWGI SG17: EWG Incubator</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3835R0">P3835R0</a> </td>
		<td>Contracts make C++ less safe -- full stop</td>
		<td>John Spicer</td>
		<td>2025-09-08</td>
		<td>2025-09</td>
		<td></td>
		<td>EWG Evolution,CWG Core,LWG Library</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3836R0">P3836R0</a> </td>
		<td>Make optional&lt;T&amp;&gt; trivially copyable</td>
		<td>Jan Schultke</td>
		<td>2025-09-11</td>
		<td>2025-09</td>
		<td></td>
		<td>LEWG Library Evolution</td>
<!--		<td></td>  -->
	</tr>

	<tr>
		<td><a href="https://wg21.link/P3838R0">P3838R0</a> </td>
		<td>Restoring Private Module Fragments</td>
		<td>Alisdair Meredith</td>
		<td>2025-09-10</td>
		<td>2025-09</td>
		<td></td>
		<td>CWG Core</td>
<!--		<td></td>  -->
	</tr>


</tbody>
</table>]]></description>
      <dc:subject><![CDATA[News, Standardization,]]></dc:subject>
      <pubDate>Thu, 11 Sep 2025 18:09:16 +0000</pubDate>
      <dc:creator>Administrator</dc:creator>
    </item>

    <item>
      <title>Planning the next Meeting C++ job fairs</title>
      <link>https://isocpp.org//blog/2025/09/planning-the-next-meeting-cpp-job-fairs</link>
      <guid>https://isocpp.org//blog/2025/09/planning-the-next-meeting-cpp-job-fairs</guid>
      <description><![CDATA[<p>
	Meeting C++ is hosting a job fair in October online and planning a job fair in November in Berlin at <a href="https://meetingcpp.com/2025">Meeting C++ 2025</a>!</p>
<blockquote>
	<h2>
		<a href="https://meetingcpp.com/meetingcpp/news/items/Planning-the-next-Meeting-Cpp-job-fairs.html">Planning the next Meeting C++ job fairs</a></h2>
</blockquote>
<blockquote>
	<p>
		by Jens Weller</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		The next Meeting C++ online job fair is planned for October 14th &amp; 15th, also I&#39;d like to talk about the onsite job fair plans for Meeting C++ 2025!</p>
	<p>
		If you have open positions you should advertise them in the bi-weekly Meeting C++ Jobs Newsletter, which now also powers the candidate listing of Meeting C++ with 80+ international candidates at the moment.</p>
	<p>
		&nbsp;</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Product News, Events,]]></dc:subject>
      <pubDate>Thu, 11 Sep 2025 16:01:12 +0000</pubDate>
      <dc:creator>Meeting C++</dc:creator>
    </item>

    <item>
      <title>Format your own type (Part 1) &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2025/09/format-your-own-type-part-1-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2025/09/format-your-own-type-part-1-sandor-dargo</guid>
      <description><![CDATA[<p>
	<img alt="SANDOR_DARGO_ROUND.JPG" src="https://isocpp.org/files/img/SANDOR_DARGO_ROUND.JPG" style="width: 150px; margin: 10px; float: right; height: 153px;" />I recently published two posts about how C++26 improves&nbsp;<code>std::format</code>&nbsp;and the related facilities. (If you missed them, here are&nbsp;<a href="https://www.sandordargo.com/blog/2025/07/09/cpp26-format-part-1">Part 1</a>&nbsp;and&nbsp;<a href="https://www.sandordargo.com/blog/2025/07/16/cpp26-format-part-2">Part 2</a>). Now it&rsquo;s time to explore how you can&nbsp;format your own types&nbsp;using&nbsp;<code>std::format</code>.</p>
<blockquote>
	<h3>
		<a href="https://www.sandordargo.com/blog/2025/07/23/format-your-own-type-part-1">Format your own type (Part 1)</a></h3>
	<p>
		by Sandor Dargo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		<code>std::format</code>&nbsp;was introduced in C++20 and is based on Victor Zverovich&rsquo;s&nbsp;<code>&lt;fmt&gt;</code>&nbsp;library, which in turn was inspired by Python&rsquo;s string formatting capabilities.</p>
	<p>
		Let&rsquo;s skip the fancy formatting options and simply see how to interpolate values using&nbsp;<code>std::format</code>.</p>
</blockquote>
<blockquote>
	<pre class="prettyprint lang-cpp">
<code>#include &lt;format&gt;&#10;#include &lt;iostream&gt;&#10;#include &lt;string&gt;</code>&#10;&#10;<code>int main() &#123;&#10;    std::string language&#123;"C++"&#125;;&#10;    int version&#123;20&#125;;&#10;    std::cout &lt;&lt; std::format("&#123;&#125;&#123;&#125; is fun", language, version) &lt;&lt; &#39;\n&#39;;&#10;&#125;</code>&#10;&#10;<code>/*&#10;C++20 is fun&#10;*/</code></pre>
</blockquote>
<blockquote>
	<p>
		That was easy.</p>
	<p>
		Now imagine you want to print your own type. That won&rsquo;t work by default.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Thu, 11 Sep 2025 03:02:43 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Changing /std:c++14 to /std:c++20 &#45; How Hard Could It Be? &#45;&#45; Keith Stockdale</title>
      <link>https://isocpp.org//blog/2025/09/cppcon-2025-changing-stdcpp14-to-stdc20-how-hard-could-it-be-keith-stockdal</link>
      <guid>https://isocpp.org//blog/2025/09/cppcon-2025-changing-stdcpp14-to-stdc20-how-hard-could-it-be-keith-stockdal</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/4/1e/23329226/avatar.jpg?21d" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bO9/changing-stdc++14-to-stdc++20-how-hard-could-it-be">Changing /std:c++14 to /std:c++20 - How Hard Could It Be?</a></h3>
	<p>
		Monday, September 15 15:15 - 16:15 MDT</p>
	<p>
		by Keith Stockdale</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Rare put in huge amounts of work to bring Sea of Thieves to PlayStation 5 and to upgrade from the old XDK and UWP platforms to the new GDK platform. In this session, Rare will discuss why they made the decision to take this opportunity to also upgrade from C++14 to C++20. It shouldn&rsquo;t be much harder than changing a 14 to a 20, right? How hard could it be?</p>
	<p>
		Rare will discuss all the work that was involved in upgrading their language standard and share some anecdotes of some of the challenges that were met along the way. They will go through the benefits that they have felt from this upgrade along with some plans for continuing this work in the future.</p>
</blockquote>
<p>
	Keith Stockdale is a Northern Irish senior software engineer who has been working on the Engine and Rendering teams at Rare Ltd for the last 8 years working on Sea of Thieves. At Rare, Keith&#39;s main areas of focus are involved in maintaining and creating general purpose simulations that run on the GPU. For example, he is the owner of the GPU particle system that drives the visual effects in Sea of Thieves. Keith is enthusiastic about promoting writing good quality code, whether it is running on the CPU on the GPU. He is driven towards ensuring that the code-bases he works in are enjoyable to work in for all current and future developers on his team.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Wed, 10 Sep 2025 20:41:00 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>C++ Day 2025</title>
      <link>https://isocpp.org//blog/2025/09/cppday25</link>
      <guid>https://isocpp.org//blog/2025/09/cppday25</guid>
      <description><![CDATA[<p>
	A full day of C++ in Pavia (Italy) on October 25:</p>
<blockquote>
	<p>
		<img alt="" src="https://italiancpp.github.io/cppday25/img/wallpaper-retro.jpg" style="width: 230px; float: right;" /></p>
</blockquote>
<blockquote>
	<h3>
		<a href="http://italiancpp.github.io/cppday25">C++ Day 2025</a></h3>
</blockquote>
<blockquote>
	<p>
		&nbsp;</p>
</blockquote>
<blockquote>
	<p>
		An event organized by the <a href="http://www.italiancpp.org">Italian C++ Community</a>&nbsp;and <a href="https://seavision-group.com/">SEA Vision</a>.</p>
</blockquote>
<blockquote>
	<p>
		<strong>Sponsors:</strong>&nbsp;<a href="https://www.aiv01.it/">SEA Vision</a>, <a href="https://www.eltgroup.net/">ELT</a>, <a href="https://www.sigeosrl.com/">Sigeo</a> (and others in the pipeline).</p>
	<p>
		&nbsp;</p>
</blockquote>
<blockquote>
	<p>
		<strong>All talks will be in English.</strong></p>
	<p>
		&nbsp;</p>
</blockquote>
<blockquote>
	<h3>
		In a nutshell</h3>
	<p style="text-align: justify;">
		Launched in <strong>2016</strong>, <strong>C++ Day</strong> is a community-driven event format by the <strong>Italian C++ Community</strong>, co-organized with external partners like companies and universities.</p>
	<p style="text-align: justify;">
		The C++ Day 2025 will be held in person on October 25 in Pavia, a joint effort between the <strong>Italian C++ Community</strong> and <strong>SEA Vision</strong>, who is also generously hosting the event at their venue.</p>
	<p style="text-align: justify;">
		The event is free to attend, runs for an entire day, and includes coffee breaks and lunch.</p>
</blockquote>
<blockquote>
	<p style="text-align: justify;">
		&nbsp;</p>
	<h3>
		Who should attend the&nbsp;<em>C++ Day 2025</em>?</h3>
	<p>
		This event is made by passionate C++ professionals for C++ professionals, companies, students and enthusiasts.</p>
	<p>
		&nbsp;</p>
	<h3>
		What can I find at the&nbsp;<em>C++ Day 2025</em>?</h3>
	<ul>
		<li>
			<strong>6&nbsp;</strong><strong>tech talks</strong></li>
		<li>
			2+ hours of <strong>networking</strong></li>
		<li>
			Some <strong>Sponsors</strong>&nbsp;on site</li>
		<li>
			2 coffee breaks and lunch included</li>
		<li>
			Cozy atmosphere, games and gadgets</li>
	</ul>
	<p>
		You can refer to the <a href="https://italiancpp.github.io/cppday25">detailed program</a> for more information.</p>
	<p>
		&nbsp;</p>
	<h3>
		When does the&nbsp;<em>C++ Day 2025&nbsp;</em>take place?</h3>
	<p>
		The event will be held on <strong>October 25</strong>, 2025 at <strong>SEA Vision headquarters</strong>, in <strong>Pavia</strong>.</p>
	<p>
		Open doors at 8.30 AM. The event starts at 9.15 AM and will last for a full day.</p>
	<p>
		&nbsp;</p>
	<h3>
		Who supports this event?</h3>
	<strong>Sponsors:</strong>&nbsp;<a href="https://www.aiv01.it/">SEA Vision</a>, <a href="https://www.eltgroup.net/">ELT</a>, <a href="https://www.sigeosrl.com/">Sigeo</a> (and others in the pipeline).
	<blockquote>
		&nbsp;</blockquote>
	<h3>
		Do I need to register?</h3>
	<p>
		The <em>C++ Day 2025<strong>&nbsp;</strong></em>is <strong>free</strong>, but you must register to facilitate the organization of the event. You can <a href="https://cppday25.eventbrite.it/">register here</a>.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Wed, 10 Sep 2025 07:45:07 +0000</pubDate>
      <dc:creator>Marco Arena</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Clean code! Horrible performance? &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2025/09/cppcon-2025-clean-code-horrible-performance-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2025/09/cppcon-2025-clean-code-horrible-performance-sandor-dargo</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://pbs.twimg.com/profile_images/912045136028332039/LVuhZYnR_400x400.jpg" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bRW/clean-code-horrible-performance">Clean code! Horrible performance?</a></h3>
	<p>
		Friday, September 18 14:45 - 15:45 MDT</p>
	<p>
		by Sandor Dargo</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Clean code promises readability, maintainability, and clarity. But is it possible that the pursuit of clean code comes at a catastrophic cost to performance? Some sceptics argue that adhering to clean code practices means sacrificing years - if not decades - of hardware advancements. Is clean code really that expensive? Let&rsquo;s explore the complex relationship between clean code and software performance. In this talk, we&rsquo;ll delve into what makes software performant. We&rsquo;ll demystify the effects of clean code on performance and discover what real bottlenecks are that you&rsquo;ll encounter while working on enterprise software.</p>
	<p>
		But what is performance, really? While many immediately think of raw runtime speed, the landscape is far more intricate. We&rsquo;ll explore different facets of performance, including compile-time efficiency, memory usage, and the performance of developers themselves. However, our primary focus will be on runtime performance.</p>
	<p>
		The pivotal question we aim to answer is whether sheer runtime performance always reigns supreme. Can you truly achieve a 10x scale-up by eliminating dynamic polymorphism and virtual function calls? The very idea might seem absurd, but, believe it or not, in some specialized niches, that&rsquo;s part of the solution. Still, the vast majority of us don&rsquo;t work in those niches. We face different challenges.</p>
	<p>
		We&rsquo;ll navigate through real-life examples where awful algorithms hardly mattered, where prudent database and network management became the true path to scalability. I don&rsquo;t claim that writing code that&rsquo;s easy to understand and modify always yields optimal performance. Yet, more often than not, performance bottlenecks and the road to performant software lie elsewhere.</p>
</blockquote>
<p>
	Sandor is a passionate software developer focusing on reducing the maintenance costs by developing, applying and enforcing clean code standards. His other core activity is knowledge sharing both oral and written, within and outside of his employer. When not reading or writing, he spends most of his free time with his two children and his wife baking at home or travelling to new places.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Tue, 09 Sep 2025 20:36:46 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Graphics Programming with SDL 3 &#45;&#45; Mike Shah</title>
      <link>https://isocpp.org//blog/2025/09/cppcon-2025-graphics-programming-with-sdl-3-mike-shah</link>
      <guid>https://isocpp.org//blog/2025/09/cppcon-2025-graphics-programming-with-sdl-3-mike-shah</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/0/8a/3972095/avatar.jpg?fd0" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bRI/graphics-programming-with-sdl-3">Graphics Programming with SDL 3</a></h3>
	<p>
		Friday, September 19 13:30 - 14:30 MDT</p>
	<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>
<p>
	Mike Shah is currently a teaching faculty with primary teaching interests&nbsp; in computer systems, computer graphics, and game engines. Mike&#39;s research interests are related to performance engineering (dynamic analysis), software visualization, and computer graphics. Along with teaching and research work, Mike juggles occasional consulting work as a 3D Senior Graphics Engineer in C++ and producing programming content at his YouTube channel https://www.youtube.com/@MikeShah</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Mon, 08 Sep 2025 20:34:23 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Planning a 5th track for Meeting C++ 2025</title>
      <link>https://isocpp.org//blog/2025/09/planning-a-5th-track-for-meeting-cpp-2025</link>
      <guid>https://isocpp.org//blog/2025/09/planning-a-5th-track-for-meeting-cpp-2025</guid>
      <description><![CDATA[<p>
	Meeting C++ is putting together a 5th track, which will feature onsite in Berlin</p>
<blockquote>
	<p>
		<a href="https://meetingcpp.com/meetingcpp/news/items/Planning-a-5th-track-for-Meeting-Cpp-2025.html">Planning a 5th track for Meeting C++ 2025</a></p>
	<p>
		by Jens Weller</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		I&#39;m working on adding a 5th Track to <a href="https://meetingcpp.com/2025">Meeting C++ 2025</a> for onsite.</p>
	<p>
		Already last year I&#39;ve been thinking about this, but in the end its been to expensive to do, and hence only feasible with a large increase in onsite attendees. This year I&#39;m able to go a different route through sponsorship, and thus for onsite the cost is covered by sponsors. Which in turn then also contribute talks. I hope that most talks will be in the schedule by October, and I plan to release the first talks in September for the new track. Right now the track is not visible in the schedule, as I don&#39;t want to add an empty track. We may also stream the online track into the conference in a room.</p>
	<p>
		&nbsp;</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Mon, 08 Sep 2025 18:52:36 +0000</pubDate>
      <dc:creator>Meeting C++</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 The Pattern Matching We Already Have &#45;&#45; Braden Ganetsky</title>
      <link>https://isocpp.org//blog/2025/09/cppcon-2025-the-pattern-matching-we-already-have-braden-ganetsky</link>
      <guid>https://isocpp.org//blog/2025/09/cppcon-2025-the-pattern-matching-we-already-have-braden-ganetsky</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/4/1e/19270778/avatar.jpg?4ad" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bOu/the-pattern-matching-we-already-have">The Pattern Matching We Already Have</a></h3>
	<p>
		Friday, September 19 09:00 - 10:00 MDT</p>
	<p>
		by Braden Ganetsky</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		All the way since C++98, we have already had pattern matching in C++! It&#39;s limited to specific places, but it&#39;s there. Template argument deduction, function overload resolution, and class template specializations are all instances of pattern matching in the C++ language, dating all the way back to the original standard.</p>
	<p>
		The C++11 additions to the language also require library constructs to help deal with type deduction in forwarding references, namely std::forward, among others. Even experienced C++ developers may run into unexpected situations using it, especially in newer scenarios like concepts from C++20. This talk will lay clear the rules of forwarding and std::forward, and how you can forward your arguments properly every time.</p>
	<p>
		This interactive talk is a deep dive into template argument deduction, helping you to understand it at deeper level across all of C++&#39;s lifespan. Almost all that applies in C++98 still applies today, so a foundational understanding is important. Additionally, newer language standards have introduced further wrinkles, like C++11&#39;s move semantics and variadic template parameters, as well as C++17&#39;s class template argument deduction. By the end of this talk, you will have a solid understanding of how C++ deduces the types used in your code.</p>
</blockquote>
<p>
	Braden Ganetsky graduated from the University of Manitoba with a degree in mechanical engineering, fueled by his passion for mechanical puzzles. During his final year of school, when all classes and activities were remote, he discovered C++ and has been hooked ever since. He interned as a C++ developer, which turned into a full time job, completing a successful pivot of his career. Now he spend his nights working on fun projects like parser combinators, and getting involved in the C++ community. Since 2023, Braden sits on the ISO C++ Committee as a representative of Canada.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Sun, 07 Sep 2025 20:33:18 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Using Distributed Trace for End&#45;to&#45;End Latency Metrics &#45;&#45;  Kusha Maharshi</title>
      <link>https://isocpp.org//blog/2025/09/cppcon-2025-using-distributed-trace-for-end-to-end-latency-metrics-kusha-ma</link>
      <guid>https://isocpp.org//blog/2025/09/cppcon-2025-using-distributed-trace-for-end-to-end-latency-metrics-kusha-ma</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/a/5c/23272267/avatar.jpg?6de" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bQT/using-distributed-trace-for-end-to-end-latency-metrics">Using Distributed Trace for End-to-End Latency Metrics</a></h3>
	<p>
		Thursday, September 18 15:15 - 16:15 MDT</p>
	<p>
		by Kusha Maharshi</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		In this talk, we&#39;ll delve into how we utilized distributed trace to address a prevalent need at a large technology company that serves the finance industry: timing requests from point A to point Z in a complex system, where a whole alphabet&#39;s worth of steps occur in between. We&#39;ll show how tracing, an open source telemetry standard, helped us generate insights from tracking requests in a complicated, microservices-driven architecture. We&#39;ll discuss the challenges faced and lessons learned while building a C++ solution that turns trace data into end-to-end latency metrics. We hope to inspire attendees to apply these lessons to telemetry solutions tailored to their own firms&#39; needs.</p>
	<p>
		Distributed tracing was introduced within our company before it was a stable, open standard. We saw its potential and invested in solutions that utilized its rich, cross-service information. However, existing open source or commercial products didn&#39;t fit the complexity and scale of our trace data. Our engineers, incident responders, and managers wanted end-to-end latency metrics to observe complex workflows, so we built our own solution! The resulting metrics now drive service level objectives (SLOs) that set measurable targets that define a system&#39;s quality and reliability. When these targets are not met, teams are alerted, thus driving quick remediation. Furthermore, the traces corresponding to any degradation in system health can be used to pinpoint faulty components, as well as aid in the development and testing phases when building new solutions.</p>
	<p>
		From a technical point of view, trace data is represented as directed acyclic graphs (DAGs), and our challenge was processing more than 50 billion daily nodes, with deep fan-outs and fan-ins. These graphical structures mirror real-world scenarios like queuing systems for high-volume messaging, order processing or batched email notifications, and present concurrency choke points at scale. In this talk, we&#39;ll break down the design of the C++ microservices we built to process large-scale streaming graphs into metrics, while also addressing scalability bottlenecks. We&#39;ll also highlight why we chose C++ and its libraries, powerful profiling tools, and efficient data structures. If you&#39;re into building low-latency, high-throughput distributed systems, want to build telemetry solutions that best suit your needs, or just enjoy geeking over graphs, this talk is for you!</p>
</blockquote>
<p>
	Kusha Maharshi is a Senior Software Engineer at Bloomberg, where she passionately works on distributed tracing and observability infrastructure. An avid public speaker, she loves breaking down complex technical challenges with clarity &ndash; and a dose of humor. Kusha holds a degree in Computer Science from Carnegie Mellon University, where she specialized in computer systems. Her favorite programming language? Assembly.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Fri, 05 Sep 2025 20:28:13 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>A Library Approach to Constant Template Parameters &#45;&#45; Barry Revzin</title>
      <link>https://isocpp.org//blog/2025/09/a-library-approach-to-constant-template-parameters-barry-revzin</link>
      <guid>https://isocpp.org//blog/2025/09/a-library-approach-to-constant-template-parameters-barry-revzin</guid>
      <description><![CDATA[<p>
	C++26 has brought big advances, especially with reflection making its way into the working draft, but one long-standing challenge remains: supporting richer class types as constant template parameters. Although the language solution isn&rsquo;t here yet, we can get surprisingly far with a library approach that uses reflection and static objects to extend what&rsquo;s possible today.</p>
<blockquote>
	<h3>
		<a href="https://brevzin.github.io/c++/2025/08/02/ctp-reflection/">A Library Approach to Constant Template Parameters</a></h3>
	<p>
		by Barry Revzin</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		This library achieves two things.</p>
	<p>
		First, it is just, in general, very useful. I&rsquo;m hoping to make it more of a Real Library&trade;&#65039; once Reflection gets implemented in more than just the Bloomberg fork of Clang that Dan Katz implemented.</p>
	<p>
		Second, I think it demonstrates the power of Reflection. There are so many problems that were not possible in C++23 that become solvable in C++26. We&rsquo;re going to spend the next several years discovering more of those, and that makes it a pretty exciting time for C++.</p>
</blockquote>
<p>
	&nbsp;</p>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Thu, 04 Sep 2025 21:56:05 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 C++ Parallel Programming Models &#45;&#45;  Eran Gilad</title>
      <link>https://isocpp.org//blog/2025/09/cppcon-2025-cpp-parallel-programming-models-eran-gilad</link>
      <guid>https://isocpp.org//blog/2025/09/cppcon-2025-cpp-parallel-programming-models-eran-gilad</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/9/d0/23329196/avatar.jpg?b05" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bQJ/c++-parallel-programming-models">C++ Parallel Programming Models</a></h3>
	<p>
		Thursday, September 18 14:00 - 15:00 MDT</p>
	<p>
		by Eran Gilad</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Modern C++ offers a wealth of parallel programming features. Those features belong to four different programming models: low-level, a-sync, cooperative multitasking, and data parallel. The low-level model (or rather, non-model) contains the basic building blocks &ndash; threads, atomics, mutex etc. The a-sync model contains async, future and related classes. The cooperative multitasking model relies on coroutines. Lastly, the data parallel model contains the parallel algorithms. The four models aren&rsquo;t just different abstraction levels &ndash; each is appropriate for a different program structure. This talk will review the four models, describe the central features used by each model, and discuss the expected use case for each one. Since many of the parallelism features are not new to the language at this point, the talk will not focus on the details of the features themselves. Instead, the talk will put them in the context of a programming model and make the choice of parallel programming features easier for C++ developers.</p>
</blockquote>
<p>
	Eran Gilad is a software engineer at Regatta Data, where he works on one of the most fascinating areas of software development: database internals. Before diving deep into database engineering, Eran was a principal research engineer at Yahoo Research and a member of a systems research group. He holds a PhD in Computer Science from the Technion, where his work centered on various aspects of parallel programming and execution. Beyond his professional work, Eran is passionate about developer communities. He co-organizes the Core C++ conference, the Haifa::C++ meetup group, and the Medabrim C++ WhatsApp group. His involvement in these communities stems from his first job experience, where he was the sole C++ developer at his company for several years.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Wed, 03 Sep 2025 20:25:06 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>C++26: std::format improvements (Part 2) &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2025/09/cpp26-stdformat-improvements-part-2-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2025/09/cpp26-stdformat-improvements-part-2-sandor-dargo</guid>
      <description><![CDATA[<p>
	<img alt="SANDOR_DARGO_ROUND.JPG" src="https://isocpp.org/files/img/SANDOR_DARGO_ROUND.JPG" style="width: 150px; margin: 10px; float: right; height: 153px;" />In&nbsp;<a href="https://www.sandordargo.com/blog/2025/07/09/cpp26-format-part-1">Part 1</a>, we explored the improvements C++26 brings to&nbsp;<code>std::format</code>&nbsp;&mdash; from better&nbsp;<code>to_string</code>&nbsp;behavior to compile-time safety checks. In this part, we look at runtime formatting, defect fixes, and support for new types like&nbsp;<code>std::filesystem::path</code>.</p>
<blockquote>
	<h3>
		<a href="https://www.sandordargo.com/blog/2025/07/16/cpp26-format-part-2">C++26: std::format improvements (Part 2)</a></h3>
	<p>
		by&nbsp;Sandor Dargo&nbsp;</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p id="runtime-format-strings">
		<strong>Runtime format strings</strong></p>
	<p>
		<a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2216r3.html">P2216R3</a>&nbsp;brought quite some improvements to&nbsp;<code>std::format</code>, including compile-time checking for format strings. Sadly, in use cases where format strings were only available at runtime, users had to go with the type-erased formatting version,&nbsp;<a href="https://en.cppreference.com/w/cpp/utility/format/vformat.html">std::vformat</a>:</p>
	<p>
		<code><span style="background-color: rgb(242, 242, 242);">std::vformat(str, std::make_format_args(42));</span></code></p>
	<p>
		Using two different APIs is not a great user experience, moreover,&nbsp;<code>std::vformat</code>&nbsp;was designed to be used by formatting function writers and not by end users. In addition, you might run into undefined behaviour, detailed in the next section.</p>
	<p>
		To overcome this situation,&nbsp;<a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2918r2.html">P2918R2</a>&nbsp;adds&nbsp;<a href="https://en.cppreference.com/w/cpp/utility/format/runtime_format.html"><code>std::runtime_format</code></a>&nbsp;so you can mark format strings that are only available at run-time. As such you can opt out of compile-time format strings checks. This makes the API cleaner and the user code will read better as it shows better the intentions.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Tue, 02 Sep 2025 21:55:00 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Back to Basics: static, inline, const, and constexpr &#45;&#45; Andreas Fertig</title>
      <link>https://isocpp.org//blog/2025/09/cppcon-2025-back-to-basics-static-inline-const-and-constexpr-andreas-fertig</link>
      <guid>https://isocpp.org//blog/2025/09/cppcon-2025-back-to-basics-static-inline-const-and-constexpr-andreas-fertig</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/d/31/19180340/avatar.jpg?906" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bPt/back-to-basics-static-inline-const-and-constexpr">Back to Basics: static, inline, const, and constexpr</a></h3>
	<p>
		Thursday, September 18 09:00 - 10:00 MDT</p>
	<p>
		by Andreas Fertig</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		C++ comes with a whole toolbox of keywords you can apply to types and functions. You think it&#39;s straightforward? My experience says otherwise. There are false-friends like static , which I often see misapplied.</p>
	<p>
		In this talk, I will demystify those tricky little keywords. You&#39;ll learn what they really mean, how they behave in different contexts, and &mdash; most importantly &mdash; when to use them (and when not to). Think const, constexpr, consteval, constinit: yes, C++ has more flavors of constness than your local ice cream shop. We&#39;ll explore them all.</p>
	<p>
		We&#39;ll go beyond syntax and dive into what&#39;s actually happening in the language.</p>
	<p>
		While the talk includes some features from C++23, most of what we cover is rooted in C++11 or even classic C++98. We&#39;ll touch on important concepts like the One Definition Rule (ODR) and top-level qualifiers, giving you a deeper understanding of how these keywords shape your code.</p>
	<p>
		After this session, you&#39;ll walk away knowing exactly where each keyword belongs. No more guesswork. Just the right keyword in the right place.</p>
</blockquote>
<p>
	Andreas Fertig, CEO of Unique Code GmbH, is an experienced trainer and consultant for C++ for standards 11 to 23. Andreas is involved in the C++ standardization committee, developing the new standards. At international conferences, he presents how code can be written better. He publishes specialist articles, e.g., for iX magazine, and has published several textbooks on C++. With C++ Insights (https://cppinsights.io), Andreas has created an internationally recognized tool that enables users to look behind the scenes of C++ and thus understand constructs even better. Before training and consulting, he worked for Philips Medizin Systeme GmbH for ten years as a C++ software developer and architect focusing on embedded systems. You can find Andreas online at andreasfertig.com.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Mon, 01 Sep 2025 19:55:24 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Welcome to v1.0 of the meta::[[verse]]! &#45;&#45; Inbal Levi</title>
      <link>https://isocpp.org//blog/2025/08/cppcon-2025-welcome-to-v1.0-of-the-metaverse-inbal-levi</link>
      <guid>https://isocpp.org//blog/2025/08/cppcon-2025-welcome-to-v1.0-of-the-metaverse-inbal-levi</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/9/02/12972173/avatar.jpg?8f1" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bPp/welcome-to-v10-of-the-metaverse">Welcome to v1.0 of the meta::[[verse]]!</a></h3>
	<p>
		Wednesday, September 17 16:45 - 17:45 MDT</p>
	<p>
		by Inbal Levi</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		This talk will introduce what is (likely) the final version of the "Reflection" feature targeting C++26.</p>
	<p>
		With a proposal to introduce reflection to C++26 (including the &ldquo;std::meta&rdquo; namespace) slated to be voted into the standard in June 2025, we can already start imagining a whole new world of possibilities.</p>
	<p>
		In this session, we will dive into reflection and its transformative potential within our codebases. We will start with a brief history of "reflection" history. We&#39;ll continue with an introduction of utilities from the latest reflection proposal. Then, we delve deeper into practical applications and demonstrate solutions to problems that commonly use reflection and the power it holds. For the last part, we will explore the possibilities within &ldquo;Reflection Libraries&rdquo;. This includes both &ldquo;traditional&rdquo; libraries which provide functionality, and more &ldquo;novel&rdquo; approaches which reshape users&rsquo; code. We will look at examples of what such libraries can cover, and demonstrate potential directions the future holds. Last but not least, we will discuss how "Reflection" may impact the way we manage our codebases and the delivery process.</p>
	<p>
		Join us as we traverse the meta::[[verse]]!</p>
</blockquote>
<p>
	&#8203;Inbal Levi is a Lead Software Engineer at Millennium (MPGC Services Ltd) with a passion for high performance, readability, compilers, language, and software design.&nbsp;She is an active member of the ISO C++ Standards Committee as Library Evolution Work Group Chair, and as the ISO C++ Israeli NB Chair.&nbsp;Inbal is also a director at ISO C++ Foundation and the Boost Foundation and puts effort into evolving both the local and international C++ communities, as an organizer of the CoreC++ conference and meetup group, and as the program chair of C++Now.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Sat, 30 Aug 2025 19:51:59 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>C++26: std::format improvement (Part 1) &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2025/08/cpp26-stdformat-improvement-part-1-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2025/08/cpp26-stdformat-improvement-part-1-sandor-dargo</guid>
      <description><![CDATA[<p>
	<img alt="SANDOR_DARGO_ROUND.JPG" src="https://isocpp.org/files/img/SANDOR_DARGO_ROUND.JPG" style="width: 150px; margin: 10px; float: right; height: 153px;" />C++26 brings a series of improvements to&nbsp;<code>std::format</code>, continuing the work started in C++20 and refined in C++23. These changes improve formatting consistency, runtime safety, and user ergonomics. There are so many of these updates, that I decided to divide them into two articles.</p>
<blockquote>
	<h3>
		<a href="https://www.sandordargo.com/blog/2025/07/09/cpp26-format-part-1">C++26: std::format improvement (Part 1)</a></h3>
	<p>
		by Sandor Dargo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p id="arithmetic-overloads-of-stdto_string-and-stdto_wstring-use-stdformat">
		<strong>Arithmetic overloads of&nbsp;<code>std::to_string</code>&nbsp;and&nbsp;<code>std::to_wstring</code>&nbsp;use&nbsp;<code>std::format</code></strong></p>
	<p>
		<a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2587r3.html">P2587R3</a>&nbsp;by Victor Zverovich proposes replacing&nbsp;<code>sprintf</code>&nbsp;with&nbsp;<code>std::format</code>&nbsp;in the arithmetic overloads of&nbsp;<code>std::to_string</code>&nbsp;and&nbsp;<code>std::to_wstring</code>.</p>
	<p>
		The motivation?</p>
	<p>
		<code>std::to_string</code>&nbsp;has long been known to produce not-so-great and misleading results (differing from&nbsp;<code>iostreams</code>), especially with floating-point values.&nbsp;<code>std::to_string</code>&nbsp;uses the global C locale. In practice, it&rsquo;s unlocalized. Also, it often places the decimal points to suboptimal places:</p>
	<pre class="prettyprint lang-cpp">
<code><span courier="" lucida="" style="font-family: Consolas, ">std::cout &lt;&lt; std::to_string(-1e-7); // prints: -0.000000 &#10;std::cout &lt;&lt; std::to_string(0.42); // prints: 0.420000</span></code></pre>
	<div>
		<div style="clear:both;">
			These outputs are imprecise and often unnecessary. By leveraging&nbsp;<code>std::format</code>&nbsp;(and ultimately&nbsp;<code>std::to_chars</code>), we now get clearer, shorter representations. The representations of floating-point overloads become also unlocalized and use the shortest decimal representations.</div>
	</div>
	<p>
		As a result, the above outputs would change as follow:</p>
</blockquote>
<pre class="prettyprint lang-cpp">
<code>    std::cout &lt;&lt; std::to_string(-1e-7);  // prints: -1e-7&#10;    std::cout &lt;&lt; std::to_string(0.42); // prints: 0.42</code></pre>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Fri, 29 Aug 2025 21:55:35 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Keynote: C++: Some Assembly Required &#45;&#45; Matt Godbolt</title>
      <link>https://isocpp.org//blog/2025/08/cppcon-2025-keynote-cpp-some-assembly-required-matt-godbolt</link>
      <guid>https://isocpp.org//blog/2025/08/cppcon-2025-keynote-cpp-some-assembly-required-matt-godbolt</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/a/69/4338721/avatar.jpg?bbc" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bNc/c++-some-assembly-required">C++: Some Assembly Required</a></h3>
	<p>
		Friday, September 19 16:15 - 18:00 MDT</p>
	<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.<br />
		Presenters</p>
</blockquote>
<p>
	Matt Godbolt is the creator of the Compiler Explorer website. He is passionate about writing efficient code. He has previously worked at a trading firm, on mobile apps at Google, run his own C++ tools company and spent more than a decade making console games. When he&#39;s not hacking on Compiler Explorer, Matt enjoys writing emulators for old 8-bit computer hardware.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Fri, 29 Aug 2025 19:40:24 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Keynote: More Speed &amp;amp; Simplicity:Practical Data&#45;Oriented Design in C++ &#45;&#45; Vittorio Romeo</title>
      <link>https://isocpp.org//blog/2025/08/cppcon-2025-keynote-more-speed-simplicitypractical-data-oriented-design-in</link>
      <guid>https://isocpp.org//blog/2025/08/cppcon-2025-keynote-more-speed-simplicitypractical-data-oriented-design-in</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/1/7d/23329234/avatar.jpg?5ff" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bNZ/more-speed-simplicity-practical-data-oriented-design-in-c++">Keynote: More Speed &amp; Simplicity:Practical Data-Oriented Design in C++</a></h3>
	<p>
		Thursday, September 18 10:30 - 12:00 MDT</p>
	<p>
		by 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>
<p>
	Vittorio Romeo (B.Sc. Computer Science, 9+ YoE at Bloomberg) works on mission-critical C++ infrastructure and provides Modern C++ training to hundreds of fellow employees. He began programming around the age of 8 and became a C++ enthusiast shortly after discovering the language. Vittorio created several open-source C++ libraries and games, published many video courses and tutorials, actively participates in the ISO C++ standardization process, and maintains the popular SFML library. He co-authored the acclaimed "Embracing Modern C++ Safely" book (published in January 2022) with J. Lakos, R. Khlebnikov, and A. Meredith. Vittorio is an active member of the C++ community with an ardent desire to share his knowledge and learn from others: he presented and offered workshops over 20 times at international C++ conferences (including CppCon, C++Now, ++it, ACCU, C++ On Sea, C++ Russia, and Meeting C++), covering topics of various nature. He also maintains a website with advanced C++ articles and a YouTube channel featuring well-received modern C++11/14 tutorials. Lastly, he&#39;s active on StackOverflow, taking great care in answering interesting C++ question (90k reputation). When he&#39;s not writing code, Vittorio enjoys weightlifting, playing volleyball, scuba diving, canyoning, gaming, and enjoying sci-fi content.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Thu, 28 Aug 2025 19:33:00 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Boost version 1.89 released!</title>
      <link>https://isocpp.org//blog/2025/08/boost-version-1.89-released</link>
      <guid>https://isocpp.org//blog/2025/08/boost-version-1.89-released</guid>
      <description><![CDATA[<p>
	<a href="https://www.boost.org/releases/1.89.0/"><img alt="space.png" src="https://isocpp.org/files/img/space.png" style="width: 2px; margin: 10px; float: right;" /><img alt="space.png" src="https://isocpp.org/files/img/space.png" style="width: 2px; margin: 10px; float: right;" /><img alt="getboost.png" src="https://isocpp.org/files/img/getboost.png" style="width: 147px; margin: 10px; float: right;" />Release 1.89 of the Boost C++ Libraries is now available.</a></p>
<p>
	One new library and updates to 28 more.</p>
<p>
	Bloom, configurable filters for probabilistic lookup: <a href="https://boost.org/libs/bloom">https://boost.org/libs/bloom</a></p>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Wed, 27 Aug 2025 21:51:14 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Keynote: Crafting the Code You Don’t Write: Sculpting SW in an AI World &#45;&#45; Daisy Hollman</title>
      <link>https://isocpp.org//blog/2025/08/cppcon-2025-keynote-crafting-the-code-you-dont-write-sculpting-sw-in-an-ai</link>
      <guid>https://isocpp.org//blog/2025/08/cppcon-2025-keynote-crafting-the-code-you-dont-write-sculpting-sw-in-an-ai</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/f/bb/23451223/avatar.jpg?006" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bNT/crafting-the-code-you-dont-write-sculpting-software-in-an-ai-world">Crafting the Code You Don&#39;t Write: Sculpting Software in an AI World</a></h3>
	<p>
		Tuesday, September 16 10:30 - 12:00 MDT</p>
	<p>
		by Daisy Hollman</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		It&rsquo;s shockingly uncontroversial to say that the fields of developer experience and developer productivity have changed more in the past six months than in the 25 years before that.</p>
	<p>
		As part of the Claude Code team at Anthropic, I&rsquo;ve had the privilege of witnessing the evolution of agentic coding from proof-of-concept experiments to nearly autonomous software engineers in just six months. In this keynote, I&rsquo;ll share some of my experiences and learnings from that journey, talk about how LLMs work more generally, attempt some live demonstrations of the latest functionality, explore the future of agentic programming, and tie all of this back to what it means for your workflow as a software engineer.</p>
	<p>
		When I agreed to give this talk earlier this year, there was some portion of the narrative that involved &ldquo;why you should be using agents to accelerate your development process.&rdquo; Since then, the world of software engineering has evolved such that the interesting question is no longer &ldquo;why&rdquo; but &ldquo;how.&rdquo; Like sculptors facing the invention of power tools, or painters around the invention of photography, we now live in a world where vast quantities of rough-draft code can be generated with a very low barrier to entry. How does the role of a software engineer evolve when AI can autonomously implement features from requirements? How do we build safety features into the power tools we&rsquo;re chiseling away at our codebases with? What aspects of software craftsmanship become more important, not less, in an age of abundant code generation? And critically for the C++ community: how do we leverage these tools where correctness and performance are non-negotiable? The future isn&rsquo;t about AI replacing programmers, but about a fundamental shift in how we think about software creation. And surprisingly, you might not miss the old way of doing things.</p>
</blockquote>
<p>
	Dr. Daisy Hollman is a distinguished software engineer and programming language expert, known for her impactful contributions to the C++ standards committee since 2016. She has worked on C++ language and library design at Google, and more recently joined Anthropic, where she explores the intersection of programming languages and AI systems.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Tue, 26 Aug 2025 19:28:11 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Keynote: Reflection: C++’s Decade&#45;Defining Rocket Engine &#45;&#45; Herb Sutter</title>
      <link>https://isocpp.org//blog/2025/08/cppcon-2025-keynote-herb-sutter-reflection-cpps-decade-defining-rocket-engi</link>
      <guid>https://isocpp.org//blog/2025/08/cppcon-2025-keynote-herb-sutter-reflection-cpps-decade-defining-rocket-engi</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/0/0a/5813844/avatar.jpg?df8" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bNW/reflection-c++s-decade-defining-rocket-engine">Keynote: Reflection: C++&rsquo;s Decade-Defining Rocket Engine</a></h3>
	<p>
		Wednesday, September 17 10:30 - 12:00 MDT</p>
	<p>
		by Herb Sutter</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		In June 2025, C++ crossed a Rubicon: it handed us the keys to its own machinery. For the first time, C++ can describe itself&mdash;and generate more. The first compile-time reflection features in draft C++26 mark the most transformative turning point in our language&rsquo;s history by giving us the most powerful new engine for expressing efficient abstractions that C++ has ever had, and we&rsquo;ll need the next decade to discover what this rocket can do.</p>
	<p>
		This session is a high-velocity tour through what reflection enables today in C++26, and what it will enable next. We&rsquo;ll start with live compiler demos (Godbolt, of course) to show how much the initial C++26 feature set can already do. Then we&rsquo;ll jump a few years ahead, using Dan Katz&rsquo;s Clang extensions and my own cppfront reflection implementation to preview future capabilities that could reshape not just C++, but the way we think about programming itself.</p>
	<p>
		We&rsquo;ll see how reflection can simplify C++&rsquo;s future evolution by reducing the need for as many bespoke new language features, since many can now be expressed as reusable compile-time libraries&mdash;faster to design, easier to test, and portable from day one. We&rsquo;ll even glimpse how it might solve a problem that has long eluded the entire software industry, in a way that benefits every language.</p>
	<p>
		The point of this talk isn&rsquo;t to immediately grok any given technique or example. The takeaway is bigger: to leave all of us dizzy from the sheer volume of different examples, asking again and again, &ldquo;Wait, we can do that now?!&rdquo;&mdash;to fire up our imaginations to discover and develop this enormous new frontier together, and chart the strange new worlds C++ reflection has just opened for us to explore.</p>
	<p>
		Reflection has arrived, more is coming, and the frontier is open. Let&rsquo;s go.</p>
</blockquote>
<p>
	Herb is an author, designer of several Standard C++ features, and chair of the ISO C++ committee and the Standard C++ Foundation. His current interest is simplifying C++.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Mon, 25 Aug 2025 16:15:59 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 To Err is Human: Robust Error Handling in C++26 &#45;&#45; Sebastian Theophil</title>
      <link>https://isocpp.org//blog/2025/08/cppcon-2025-to-err-is-human-robust-error-handling-in-cpp26-sebastian-theoph</link>
      <guid>https://isocpp.org//blog/2025/08/cppcon-2025-to-err-is-human-robust-error-handling-in-cpp26-sebastian-theoph</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/0/40/13684983/avatar.jpg?533" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bPb/to-err-is-human-robust-error-handling-in-c++26">To Err is Human: Robust Error Handling in C++26</a></h3>
	<p>
		Wednesday, September 17 15:15 - 16:15 MDT</p>
	<p>
		by Sebastian Theophil</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Every program may encounter errors, some originating from internal bugs in the program, others coming from the environment the program is operating in. Ignoring all errors will make the program utterly unreliable, while treating every conceivable one introduces lots of extra complexity with little benefit. So which errors should you handle? And how should you handle them? This talk describes our proven approach to error handling so that you can write more reliable software with less effort.</p>
	<p>
		C++23 and C++26 have seen several improvements to C++ error handling: std::stacktrace, std::expected, contracts and library hardening. We will cover these features as well and how to best use them in practice to catch more errors, report them and fix them.</p>
</blockquote>
<p>
	Sebastian has been working at think-cell since its founding in 2002. In the last few years, among many other things, he has ported think-cell to run on macOS. He is also the maintainer of the typescripten project which lets programmers call JavaScript libraries from C++ code compiled to WebAssembly in a convenient and type-safe way. He enjoys leaving his desk from time to time to talk at international C++ conferences.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Sun, 24 Aug 2025 15:46:01 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Mastering the Code Review Process &#45;&#45; Peter Muldoon</title>
      <link>https://isocpp.org//blog/2025/08/cppcon-2025-mastering-the-code-review-process-peter-muldoon</link>
      <guid>https://isocpp.org//blog/2025/08/cppcon-2025-mastering-the-code-review-process-peter-muldoon</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/b/23/5840957/avatar.jpg?abf" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bPa/mastering-the-code-review-process">Mastering the Code Review Process</a></h3>
	<p>
		Wednesday, September 17 15:15 - 16:15 MDT</p>
	<p>
		by Peter Muldoon</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		In software development, significant attention is given to writing clean, maintainable code. Yet, despite the best of intentions, many codebases drift from structured practices due to inconsistent or ineffective code reviews. This is a real problem as it is the last line of defense before merging and deploying changes to production.</p>
	<p>
		Engineers spend far more time reading code than writing it. Even small changes demand a thorough understanding of the surrounding code to prevent errors and unintended consequences. An effective code review process significantly amplifies good coding practices, structured problem-solving, and overall code quality.</p>
	<p>
		This talk outlines core principles for conducting impactful code reviews emphasizing methodologies that balance consistent evaluation with the flexibility for handling the inevitable unusual situations.</p>
	<p>
		We will also explore practical ways to measure code review effectiveness , enabling teams to continuously improve their code review process. What would a code review checklist look like? What are the consequences and friction points of a poor code review process?</p>
	<p>
		As the code review process matures within an organization, it can also be shown to act as an effective instructional tool and drive positive organizational change , enhancing both the quality of the codebase and the capability of individual teams.</p>
</blockquote>
<p>
	<br />
	Pete Muldoon has been using C++ since 1991. Pete has worked in Ireland, England and the USA and is currently employed by Bloomberg. A consultant for over 20 years prior to joining Bloomberg, Peter has worked on a broad range of projects and code bases in a large number of companies both tech and finance. Such broad exposure has, over time, shown what works and what doesn&#39;t for large scale engineering projects. He&#39;s a proponent of applied engineering principles, elegant solutions and expressive code.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Fri, 22 Aug 2025 14:44:29 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Once More About dynamic_cast, a Real Use Case &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2025/08/once-more-about-dynamic-cast-a-real-use-case-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2025/08/once-more-about-dynamic-cast-a-real-use-case-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;" />While <code data-end="66" data-start="52">dynamic_cast</code> is often discouraged for its impact on readability and reliance on RTTI, there are rare situations where it can be the most practical and safe solution. In this post, we explore one such real-world case: using <code data-end="291" data-start="277">dynamic_cast</code> for runtime versioning of plugin interfaces in a way that balances compatibility, safety, and extensibility.</p>
<blockquote>
	<h3>
		<a href="https://www.sandordargo.com/blog/2025/06/25/once-more-about-dynamic-casts">Once More About dynamic_cast, a Real Use Case</a></h3>
	<p>
		by Sandor Dargo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		I wrote a couple of times about&nbsp;<code>dynamic_cast</code>&nbsp;and I discouraged you from using it. In general,&nbsp;<a href="https://www.sandordargo.com/blog/2023/04/26/without-rtti-your-code-will-be-cleaner">it makes code worse in terms of readability</a>. When you get rid of&nbsp;<code>dynamic_cast</code>, either via self-discipline or by&nbsp;<a href="https://www.sandordargo.com/blog/2023/03/01/binary-sizes-and-rtti">turning RTTI off</a>, you&rsquo;ll have to rely on dynamic dispatching and better abstractions.</p>
	<p>
		But there might be cases, when it&rsquo;s not possible or at least it&rsquo;s not meaningful to remove&nbsp;<code>dynamic_cast</code>, here is one, sent by one of you.</p>
	<p id="versioning-with-the-help-of-dynamic_cast">
		<strong>Versioning with the help of&nbsp;<code>dynamic_cast</code></strong></p>
	<p>
		They have an SDK that anyone can implement. As there are new features added every now and then, the API keeps changing. Not surprisingly, the owners of the SDK want to prevent their users&rsquo; code from breaking. They achieve this by having different &ldquo;versioned&rdquo; interfaces for the same service where a new version inherits from the previous one.</p>
	<p>
		Let&rsquo;s see a simplified example.</p>
	<img alt="" src="data:image/png;base64,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" /></blockquote>
<p>
	&nbsp;</p>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Thu, 21 Aug 2025 15:14:18 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Best Practices for AI Tool Use &#45;&#45; Jason Turner</title>
      <link>https://isocpp.org//blog/2025/08/cppcon-2025-best-practices-for-ai-tool-use-jason-turner</link>
      <guid>https://isocpp.org//blog/2025/08/cppcon-2025-best-practices-for-ai-tool-use-jason-turner</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/3/fd/15024032/avatar.jpg?57f" style="width: 150px; height: 150px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bPC/best-practices-for-ai-tool-use">Best Practices for AI Tool Use</a></h3>
	<p>
		Wednesday, September 17 09:00 - 10:00 MDT</p>
	<p>
		by Jason Turner</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		AI (LLMs) are becoming prolific in C++ tooling. Virtually everything has an AI bot built in or available to it. Common wisdom says that these tools simply regurgitate what they find on the internet. As we all know, the internet is full of terrible examples of outdated memory leaks, undefined behavior, and worse!</p>
	<p>
		How do we effectively and safely use these tools while ensuring good code quality?!</p>
</blockquote>
<p>
	Jason is host of the YouTube channel C++Weekly, co-host emeritus of the podcast CppCast, author of C++ Best Practices, and author of the first casual puzzle books designed to teach C++ fundamentals while having fun!</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Wed, 20 Aug 2025 15:41:00 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Trip report: C++ On Sea 2025 &#45;&#45; Sandor Dargo</title>
      <link>https://isocpp.org//blog/2025/08/trip-report-cpp-on-sea-2025-sandor-dargo</link>
      <guid>https://isocpp.org//blog/2025/08/trip-report-cpp-on-sea-2025-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: 201px; margin: 10px; float: right; height: 113px;" />Another year, another trip report from C++ On Sea!</p>
<blockquote>
	<h3>
		<a href="https://www.sandordargo.com/blog/2025/07/02/cpponsea-trip-report">Trip report: C++ On Sea 2025</a></h3>
	<p>
		by Sandor Dargo</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		First, a heartfelt thank-you to the organizers for inviting me to speak, and an equally big thank-you to my wife for taking care of the kids while I spent three days in Folkestone &mdash; plus a few more in London to visit the Spotify office and catch up with some bandmates.</p>
	<p>
		<em>If you have the chance, try to arrive early or stay around Folkestone for an extra day. It&rsquo;s a lovely town and it&rsquo;s worth exploring it. The conference program is very busy even in the evenings, so don&rsquo;t count on the after hours.</em></p>
	<p>
		<em>This year, I arrived an half a day in advance and I had a wonderful hike from Folkestone to Dover. It was totally worth it.</em></p>
	<p>
		In this post I&rsquo;ll share:</p>
	<ul>
		<li>
			Thoughts on the conference experience.</li>
		<li>
			Highlights from talks and ideas that resonated with me.</li>
		<li>
			Personal impressions, including reflections on my own sessions &mdash; both the main talk and the lightning talk.</li>
	</ul>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Tue, 19 Aug 2025 14:11:51 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 std::optional &#45;&#45;&#45; Optional Over References &#45;&#45; Steve Downey</title>
      <link>https://isocpp.org//blog/2025/08/cppcon-2025-stdoptional-optional-over-references-steve-downey</link>
      <guid>https://isocpp.org//blog/2025/08/cppcon-2025-stdoptional-optional-over-references-steve-downey</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/8/2f/4704556/avatar.jpg?c22" style="width: 124px; height: 124px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bOx/stdoptional-optional-over-references">std::optional --- Optional Over References</a></h3>
	<p>
		Tuesday, September 16 15:15 - 16:15 MDT</p>
	<p>
		by Steve Downey</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Optionals were first proposed for C++ in 2005.</p>
	<p>
		Optional , where T is constrained not to be a reference, was added in 2017.</p>
	<p>
		Optionals for lvalue references are on track to be added in C++ 26.</p>
	<p>
		What are we getting and what design choices were made? This talk will show the results.</p>
	<p>
		This talk will discuss the early history of Optionals, starting with Boost.Optional and &ldquo;N1878: A Proposal to Add an Utility Class to Represent Optional Objects (Revision 1)&rdquo;, and what the early concerns were for the reference specialization. &ldquo;P1175R0: A Simple and Practical Optional Reference for C++&rdquo; then re-proposed reference support for C++20, which was not adopted. In 2020, &ldquo;P1683R0: References for Standard Library Vocabulary Types - an optional&lt;&gt; case study&rdquo; surveyed existing behavior of optional references in the wild, and pointed out the trap of assignment behavior being state dependent. In 2023, &ldquo;P2988R0: Std:Optional&rdquo; picked up the torch again, and Revision 10 of that is the proposal that is approved by the Library Working Group.</p>
	<p>
		In 2024, &ldquo;P3168R0: Give Std:Optional Range Support&rdquo;, the proposal to make optional a range -- as opposed to having a separate range of zero or one -- was adopted. The reference implementation for optional</p>
</blockquote>
<p>
	<br />
	Steve Downey has been a programmer for more than 30 years. Steve graduated from SUNY Purchase with a BS in Mathematics. A Computer Science degree would have involved two classes before 11:00 am, so was impossible.</p>
<p>
	He has worked at Bloomberg since 2003, and is currently working as an Engineer on the C++ Infrastructure team.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Mon, 18 Aug 2025 21:37:35 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Back to Basics: Refactoring &#45;&#45; Amir Kirsh</title>
      <link>https://isocpp.org//blog/2025/08/cppcon-2025-back-to-basics-refactoring-amir-kirsh</link>
      <guid>https://isocpp.org//blog/2025/08/cppcon-2025-back-to-basics-refactoring-amir-kirsh</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/a/a9/13678406/avatar.jpg?e4a" style="width: 124px; height: 124px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bOR/back-to-basics-refactoring">Back to Basics: Refactoring</a></h3>
	<p>
		Tuesday, September 16 09:00 - 10:00 MDT</p>
	<p>
		by Amir Kirsh</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Writing C++ code is one thing, keeping it clean, readable and maintainable over time is another. In this talk, we&#39;ll review the basics of refactoring C++ code, focusing on strategies to improve code clarity, reduce duplication, and make your code easier to maintain. You&#39;ll learn how to identify code smells, recognize when refactoring is needed, and apply techniques to improve readability. We will also explore how to modernize your code by leveraging new C++ features when relevant, ensuring that your code not only adheres to best practices but is also aligned with the evolving standards of the language. Participants will gain practical knowledge on how to refactor C++ code to enhance clarity, reduce complexity, and improve long-term maintainability, a skill that becomes even more essential as AI starts generating parts of our codebase. This talk is part of the Back to Basics track and is designed for C++ beginners, but it can also be useful for intermediate and experienced developers who want to revisit the fundamentals of maintaining clean, well-structured C++ code through effective refactoring.</p>
</blockquote>
<p>
	<br />
	Amir Kirsh is a C++ lecturer at the Academic College of Tel-Aviv-Yaffo and Tel-Aviv University, previously the Chief Programmer at Comverse, after being CTO and VP R&amp;D at a startup acquired by Comverse. He is also a co-organizer of the annual Core C++ conference and a member of the ISO C++ Israeli National Body.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Sat, 16 Aug 2025 21:37:45 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>2025&#45;08 Mailing Available</title>
      <link>https://isocpp.org//blog/2025/08/2025-08-mailing-available</link>
      <guid>https://isocpp.org//blog/2025/08/2025-08-mailing-available</guid>
      <description><![CDATA[<p>
	The 2025-08 mailing of new standards papers is now available.</p>
<p>
	&nbsp;</p>
<table border="1" summary="See previous paragraph.">
	<thead>
		<tr>
			<th>
				WG21 Number</th>
			<th>
				Title</th>
			<th>
				Author</th>
			<th>
				Document Date</th>
			<th>
				Mailing Date</th>
			<th>
				Previous Version</th>
			<th>
				Subgroup</th>
			<!--            <th>Disposition</th> -->
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				<a href="https://wg21.link/N5013">N5013</a></td>
			<td>
				Programming Languages - C++</td>
			<td>
				Thomas K&ouml;ppe</td>
			<td>
				2025-08-11</td>
			<td>
				2025-08</td>
			<td>
				&nbsp;</td>
			<td>
				All of WG21</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/N5014">N5014</a></td>
			<td>
				Working Draft, Standard for Programming Language C++</td>
			<td>
				Thomas K&ouml;ppe</td>
			<td>
				2025-08-05</td>
			<td>
				2025-08</td>
			<td>
				&nbsp;</td>
			<td>
				All of WG21</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/N5015">N5015</a></td>
			<td>
				Editors&#39; Report - Programming Languages - C++</td>
			<td>
				Thomas K&ouml;ppe</td>
			<td>
				2025-08-14</td>
			<td>
				2025-08</td>
			<td>
				&nbsp;</td>
			<td>
				All of WG21</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/N5019">N5019</a></td>
			<td>
				Business Plan and Convener&#39;s Report: ISO/IEC JTC1/SC22/WG21 (C++)</td>
			<td>
				Herb Sutter</td>
			<td>
				2025-08-05</td>
			<td>
				2025-08</td>
			<td>
				&nbsp;</td>
			<td>
				All of WG21</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P2414R10">P2414R10</a></td>
			<td>
				Pointer lifetime-end zap proposed solutions</td>
			<td>
				Paul E. McKenney</td>
			<td>
				2025-08-08</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P2414R9">P2414R9</a></td>
			<td>
				EWG Evolution,LEWG Library Evolution</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P2843R3">P2843R3</a></td>
			<td>
				Preprocessing is never undefined</td>
			<td>
				Alisdair Meredith</td>
			<td>
				2025-07-18</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P2843R2">P2843R2</a></td>
			<td>
				CWG Core</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3100R4">P3100R4</a></td>
			<td>
				Implicit contract assertions</td>
			<td>
				Timur Doumler</td>
			<td>
				2025-08-13</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3100R3">P3100R3</a></td>
			<td>
				EWG Evolution</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3337R0">P3337R0</a></td>
			<td>
				Graph Library: Library Comparisons</td>
			<td>
				Phil Ratzloff</td>
			<td>
				2025-07-30</td>
			<td>
				2025-08</td>
			<td>
				&nbsp;</td>
			<td>
				SG19 Machine Learning</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3347R4">P3347R4</a></td>
			<td>
				Invalid/Prospective Pointer Operations</td>
			<td>
				Paul E. McKenney</td>
			<td>
				2025-08-08</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3347R3">P3347R3</a></td>
			<td>
				CWG Core</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3427R2">P3427R2</a></td>
			<td>
				Hazard Pointer Synchronous Reclamation</td>
			<td>
				Maged Michael</td>
			<td>
				2025-08-11</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3427R1">P3427R1</a></td>
			<td>
				LEWG Library Evolution</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3428R2">P3428R2</a></td>
			<td>
				Hazard Pointer Batches</td>
			<td>
				Maged Michael</td>
			<td>
				2025-08-11</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3428R1">P3428R1</a></td>
			<td>
				LEWG Library Evolution</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3643R1">P3643R1</a></td>
			<td>
				std::to_signed and std::to_unsigned</td>
			<td>
				Jan Schultke</td>
			<td>
				2025-08-13</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3643R0">P3643R0</a></td>
			<td>
				LEWG Library Evolution</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3688R2">P3688R2</a></td>
			<td>
				ASCII character utilities</td>
			<td>
				Jan Schultke</td>
			<td>
				2025-08-14</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3688R1">P3688R1</a></td>
			<td>
				SG16 Unicode</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3692R2">P3692R2</a></td>
			<td>
				How to Avoid OOTA Without Really Trying</td>
			<td>
				Paul E. McKenney</td>
			<td>
				2025-08-08</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3692R1">P3692R1</a></td>
			<td>
				SG1 Concurrency and Parallelism</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3702R1">P3702R1</a></td>
			<td>
				Stricter requirements for document submissions (SD-7)</td>
			<td>
				Jan Schultke</td>
			<td>
				2025-08-14</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3702R0">P3702R0</a></td>
			<td>
				All of WG21</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3719R1">P3719R1</a></td>
			<td>
				std::is_vector_bool_reference</td>
			<td>
				Yuxuan Chen</td>
			<td>
				2025-08-01</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3719R0">P3719R0</a></td>
			<td>
				LEWGI SG18: LEWG Incubator,LEWG Library Evolution</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3739R2">P3739R2</a></td>
			<td>
				Standard Library Hardening - using std::optional</td>
			<td>
				Jarrad J Waterloo</td>
			<td>
				2025-08-10</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3739R1">P3739R1</a></td>
			<td>
				LWG Library</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3774R1">P3774R1</a></td>
			<td>
				Rename std::nontype, and make it broadly useful</td>
			<td>
				Jan Schultke</td>
			<td>
				2025-08-14</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3774R0">P3774R0</a></td>
			<td>
				LEWG Library Evolution</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3775R0">P3775R0</a></td>
			<td>
				Slides for P3774R0 - Rename std::nontype</td>
			<td>
				Jan Schultke</td>
			<td>
				2025-08-12</td>
			<td>
				2025-08</td>
			<td>
				&nbsp;</td>
			<td>
				LEWG Library Evolution</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3779R0">P3779R0</a></td>
			<td>
				reserve() and capacity() for flat containers</td>
			<td>
				Nicolai Josuttis</td>
			<td>
				2025-08-01</td>
			<td>
				2025-08</td>
			<td>
				&nbsp;</td>
			<td>
				LEWG Library Evolution,LWG Library</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3790R1">P3790R1</a></td>
			<td>
				Pointer lifetime-end zap proposed solutions: Bag-of-bits pointer class</td>
			<td>
				Paul E. McKenney</td>
			<td>
				2025-08-08</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3790R0">P3790R0</a></td>
			<td>
				LEWG Library Evolution</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3796R1">P3796R1</a></td>
			<td>
				Coroutine Task Issues</td>
			<td>
				Dietmar K&uuml;hl</td>
			<td>
				2025-08-15</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3796R0">P3796R0</a></td>
			<td>
				SG1 Concurrency and Parallelism,LEWG Library Evolution,LWG Library</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3798R1">P3798R1</a></td>
			<td>
				The unexpected in std::expected</td>
			<td>
				Alex Kremer</td>
			<td>
				2025-08-12</td>
			<td>
				2025-08</td>
			<td>
				<a href="https://wg21.link/P3798R0">P3798R0</a></td>
			<td>
				SG10 Feature Test,LEWG Library Evolution,LWG Library</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3806R0">P3806R0</a></td>
			<td>
				views::cycle</td>
			<td>
				Hewill Kang</td>
			<td>
				2025-08-03</td>
			<td>
				2025-08</td>
			<td>
				&nbsp;</td>
			<td>
				SG9 Ranges,LEWG Library Evolution,LWG Library</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3809R0">P3809R0</a></td>
			<td>
				Should we make std::linalg reductions deduce return types like fold algorithms?</td>
			<td>
				Mark Hoemmen</td>
			<td>
				2025-08-07</td>
			<td>
				2025-08</td>
			<td>
				&nbsp;</td>
			<td>
				LEWG Library Evolution</td>
			<!--		<td></td>  -->
		</tr>
		<tr>
			<td>
				<a href="https://wg21.link/P3810R0">P3810R0</a></td>
			<td>
				hardened memory safety guarantees</td>
			<td>
				Jarrad J Waterloo</td>
			<td>
				2025-08-14</td>
			<td>
				2025-08</td>
			<td>
				&nbsp;</td>
			<td>
				SG23 Safety and Security</td>
			<!--		<td></td>  -->
		</tr>
	</tbody>
</table>]]></description>
      <dc:subject><![CDATA[News, Standardization,]]></dc:subject>
      <pubDate>Sat, 16 Aug 2025 00:34:07 +0000</pubDate>
      <dc:creator>Administrator</dc:creator>
    </item>

    <item>
      <title>A virtual destructor in C++, when? &#45;&#45; Andreas Fertig</title>
      <link>https://isocpp.org//blog/2025/08/a-virtual-destructor-in-cpp-when-andreas-fertig</link>
      <guid>https://isocpp.org//blog/2025/08/a-virtual-destructor-in-cpp-when-andreas-fertig</guid>
      <description><![CDATA[<p>
	<img alt="2025-07-01-when-to-not-use-a-virtual-dtor-tw.png" src="https://isocpp.org/files/img/2025-07-01-when-to-not-use-a-virtual-dtor-tw.png" style="width: 201px; margin: 10px; float: right; height: 113px;" />When should a destructor be virtual in C++? In this post, we&rsquo;ll explore a real-world example from smart pointer implementation to illustrate when virtual destructors are necessary &mdash; and when they&rsquo;re not.</p>
<blockquote>
	<h3>
		<a href="https://andreasfertig.com/blog/2025/07/a-virtual-destructor-in-cpp-when/">A virtual destructor in C++, when?</a></h3>
	<p>
		by Andreas Fertig</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		In today&#39;s post, I would like to explain a design rationale used in my post&nbsp;<a href="https://andreasfertig.com/blog/2024/09/understanding-the-inner-workings-of-cpp-smart-pointers-the-shared_ptr/">Understanding the inner workings of C++ smart pointers - The shared_ptr</a>.</p>
	<p>
		Keen readers spotted that in my implementation of&nbsp;<code>ctrl_blk_base</code>, I didn&#39;t make the destructor&nbsp;<code>virtual</code>. Here is the original code for easy reference:</p>
	<img alt="" src="data:image/png;base64,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" />
	<pre>
&#10;</pre>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Fri, 15 Aug 2025 15:05:43 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>PVS&#45;Studio 7.38: new C++ analyzer core</title>
      <link>https://isocpp.org//blog/2025/08/pvs-studio-7.38-new-cpp-analyzer-core</link>
      <guid>https://isocpp.org//blog/2025/08/pvs-studio-7.38-new-cpp-analyzer-core</guid>
      <description><![CDATA[<p>
	PVS-Studio 7.38 has been released. This version brings the new core for the C and C++ analyzer, the user annotation mechanism in the Java analyzer, enhanced taint analysis, and that&#39;s not all! See more details in this note.</p>
<blockquote>
	<h3>
		<a href="https://pvs-studio.com/en/blog/posts/1276/">PVS-Studio 7.38: new C++ analyzer core, user annotations in Java, enhanced taint analysis, and more</a></h3>
	<p>
		by&nbsp;Aleksandra Uvarova</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		The C and C++ analyzer got a new core with completely redesigned components like a parser, a semantic analyzer, and a type system. The new core provides more accurate handling of template constructs and better parsing of the standard library and code based on modern C++ standards. During the extended testing period (EAP), the new core demonstrated stable performance across a wide range of real-world projects.</p>
</blockquote>]]></description>
      <dc:subject><![CDATA[Product News,]]></dc:subject>
      <pubDate>Fri, 15 Aug 2025 08:43:29 +0000</pubDate>
      <dc:creator>Andrey Karpov</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 Missing Step: Making Data Oriented Design One Million Times Faster &#45;&#45; Andrew Drakeford</title>
      <link>https://isocpp.org//blog/2025/08/cppcon-2025-missing-step-making-data-oriented-design-one-million-times-fast</link>
      <guid>https://isocpp.org//blog/2025/08/cppcon-2025-missing-step-making-data-oriented-design-one-million-times-fast</guid>
      <description><![CDATA[<p>
	<strong>Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2025.sched.com/event/27bOX/the-missing-step-making-data-oriented-design-one-million-times-faster">The Missing Step: Making Data Oriented Design One Million Times Faster</a></h3>
	<p>
		Tuesday, September 16 09:00 - 10:00 MDT</p>
	<p>
		by Andrew Drakeford</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Data-oriented design (DOD) has gained traction for its practical approach to solving real-world problems. Refactoring data into an Entity-Component format sets the stage for cleaner, more efficient implementations, where lambdas process ranges and SIMD operations exploit the power of contiguous data layouts. DOD is widely recognised for addressing hardware-related performance challenges, but where do these challenges originate? The engineers behind our hardware platforms didn&rsquo;t design performance bottlenecks; they created performance opportunities. By engineering how our code interacts with hardware, we can unlock these opportunities and achieve substantial speed-ups. The key lies in understanding and exploiting the state of the system. From the instruction cache and registers to the L1 cache and memory access patterns, the processor&#39;s statefulness plays a crucial role in performance. Writing "hardware-friendly" code is fundamentally about aligning with this state. But hardware is only part of the equation. What about the statefulness of our software? By carefully engineering the sequence of operations and algorithms to align with both hardware and software states, we can achieve unparalleled optimization. This is the missing step. Engaging with the design problem in full can be very difficult. We leverage George Polya&rsquo;s problem-solving process and heuristics to guide our approach. This presentation explores these principles through real-world examples in machine learning and mathematical finance, demonstrating how addressing both sides of the problem can improve performance by orders of magnitude. (Yes, even six orders of magnitude.) Attendees will leave with insights into the exploration process and actionable techniques that might lead to achieving similar gains in their own work. It has been noted that some attendees might start drawing more diagrams when problem-solving and have an overwhelming urge to get Polya&rsquo;s book.</p>
</blockquote>
<p>
	<br />
	Andrew Drakeford A Physics PhD who started developing C++ applications in the early 90s at British Telecom labs. For the last two decades, he has worked in finance developing efficient calculation libraries and trading systems in C++. His current focus is on making quant libraries more ecologically sound. He is a member of the BSI C++ panel.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Thu, 14 Aug 2025 16:32:25 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>Reflecting JSON into C++ Objects &#45;&#45; Barry Revzin</title>
      <link>https://isocpp.org//blog/2025/08/reflecting-json-into-cpp-objects-barry-revzin</link>
      <guid>https://isocpp.org//blog/2025/08/reflecting-json-into-cpp-objects-barry-revzin</guid>
      <description><![CDATA[<p>
	C++26 marks a transformative milestone with the adoption of full compile-time reflection, enabling powerful new metaprogramming capabilities. In this post, we&rsquo;ll explore how reflection lets you turn a JSON file directly into a fully-typed C++ object &mdash; all at compile time.</p>
<blockquote>
	<h3>
		<a href="https://brevzin.github.io/c++/2025/06/26/json-reflection/">Reflecting JSON into C++ Objects</a></h3>
	<p>
		by&nbsp;Barry Revzin</p>
</blockquote>
<p>
	From the article:</p>
<blockquote>
	<p>
		Last week, C++26 was finalized in Sofia, Bulgaria &mdash;&nbsp;and C++26 will include all of the reflection papers that we were pushing for:</p>
	<ol>
		<li>
			<a href="https://isocpp.org/files/papers/P2996R13.html">P2996R13</a>: Reflection for C++26</li>
		<li>
			<a href="https://isocpp.org/files/papers/P3394R4.html">P3394R4</a>: Annotations for Reflection</li>
		<li>
			<a href="https://isocpp.org/files/papers/P3293R3.html">P3293R3</a>: Splicing a Base Class Subobject</li>
		<li>
			<a href="https://isocpp.org/files/papers/P3491R3.html">P3491R3</a>:&nbsp;<code>define_static_&#123;string,object,array&#125;</code></li>
		<li>
			<a href="https://isocpp.org/files/papers/P1306R5.html">P1306R5</a>: Expansion Statements</li>
		<li>
			<a href="https://isocpp.org/files/papers/P3096R12.pdf">P3096R12</a>: Function Parameter Reflection in Reflection for C++26</li>
		<li>
			<a href="https://isocpp.org/files/papers/P3560R2.html">P3560R2</a>: Error Handling in Reflection</li>
	</ol>
	<p>
		Those are in the order in which they were adopted, not in the order of their impact (otherwise splicing base classes would go last). This is a pretty incredible achievement that couldn&rsquo;t have happened without lots of people&rsquo;s work, but no one person is more responsible for Reflection in C++26 than Dan Katz.</p>
	<p>
		So today I wanted to talk about a very cool example that Dan put together on the flight home from Sofia, while I was unconscious a few seats over: the ability to, at compile time, ingest a JSON file and turn it into a C++ object. That is, given a file&nbsp;<code>test.json</code>&nbsp;that looks like this:</p>
	<pre>
<code>&#123; "outer": "text", &#10;"inner": &#123; "field": "yes", "number": 2996 &#125; &#10;&#125; </code></pre>
	<p>
		We can write this:</p>
	<pre>
<code>constexpr const char data[] = &#123; &#10;     #embed "test.json" &#10;     , 0 &#10;&#10;&#125;; constexpr auto v = json_to_object&lt;data&gt;;</code></pre>
</blockquote>]]></description>
      <dc:subject><![CDATA[News, Articles & Books,]]></dc:subject>
      <pubDate>Wed, 13 Aug 2025 16:00:45 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    <item>
      <title>CppCon 2025 What&apos;s New for VS Code: Perf., Debugging, &amp;amp; GitHub Copilot Agents &#45;&#45; Alexandra Kemper</title>
      <link>https://isocpp.org//blog/2025/08/cppcon-2025-whats-new-for-vs-code-perf.-debugging-github-copilot-agents-ale</link>
      <guid>https://isocpp.org//blog/2025/08/cppcon-2025-whats-new-for-vs-code-perf.-debugging-github-copilot-agents-ale</guid>
      <description><![CDATA[<p>
	<strong><img alt="" src="https://avatars.sched.co/f/c7/19129748/avatar.jpg?299" style="width: 124px; height: 124px; float: right;" />Registration is now open for CppCon 2025!</strong> The conference starts on September 13 and will be held&nbsp;<a href="https://cppcon.org">in person in Aurora, CO</a>.&nbsp;To whet your appetite for this year&rsquo;s conference, we&rsquo;re posting some upcoming talks that you will be able to attend this year. Here&rsquo;s another CppCon future talk we hope you will enjoy &ndash; and&nbsp;<strong><a href="https://cppcon.org/registration/">register today</a> for CppCon 2025!</strong></p>
<blockquote>
	<h3>
		<a href="https://cppcon2024.sched.com/event/1gZeU/an-ode-to-concepts">What&#39;s New for Visual Studio Code: Performance, Debugging, &amp; GitHub Copilot Agents</a></h3>
	<p>
		Tuesday, September 16 09:00 - 10:00 MDT</p>
	<p>
		by Alexandra Kemper</p>
</blockquote>
<p>
	Summary of the talk:</p>
<blockquote>
	<p>
		Join us for a deep dive into the latest advancements for C++ in Visual Studio Code, designed to help modern C++ developers tackle real-world challenges with a faster, smarter, and more customizable development environment. In this talk, we&rsquo;ll showcase updates to the C++ extension, featuring several performance improvements and new LLDB debugging capabilities that will streamline the process of identifying and resolving issues in your code. We&rsquo;ll also explore updates to the CMake Tools extension, including new CMake language services that are now available in-house to provide rich language support for CMake files. Additionally, discover how GitHub Copilot support for C++ developers has evolved in the last year, including the new Agent mode that can help you with complex, multi-step coding tasks such as modernizing your C++ repo. Whether you are maintaining legacy code or building for the future with C++, Copilot can help you write, build, and refactor your C++ code to streamline your development experience &ndash; all within VS Code.</p>
</blockquote>
<p>
	<br />
	Alexandra Kemper graduated from the University of Virginia with a BS in Computer Science. She works at Microsoft as the PM of the C++ Extension.</p>]]></description>
      <dc:subject><![CDATA[News, Events,]]></dc:subject>
      <pubDate>Tue, 12 Aug 2025 16:20:45 +0000</pubDate>
      <dc:creator>Blog Staff</dc:creator>
    </item>

    
    </channel>
</rss>