﻿<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://brevzin.github.io/</id><title>Barry's C++ Blog</title><subtitle>A collection of articles about a variety of C++ topics.</subtitle> <updated>2026-05-26T08:41:06-05:00</updated> <author> <name>Barry Revzin</name> <uri>https://brevzin.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://brevzin.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://brevzin.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Barry Revzin </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Behold the power of meta::substitute</title><link href="https://brevzin.github.io/c++/2026/03/02/power-of-substitute/" rel="alternate" type="text/html" title="Behold the power of meta::substitute" /><published>2026-03-02T00:00:00-06:00</published> <updated>2026-03-09T21:46:53-05:00</updated> <id>https://brevzin.github.io/c++/2026/03/02/power-of-substitute/</id> <content src="https://brevzin.github.io/c++/2026/03/02/power-of-substitute/" /> <author> <name>Barry Revzin</name> </author> <category term="c++" /> <summary> My CppCon 2025 talk, Practical Reflection, is now online. Check it out! Over winter break, I started working on proposal for string interpolation. It was a lot of fun to work through implementing, basically an hour a day during my daughter’s nap time. The design itself is motivated by wanting to have a lot more functionality other than just formatting — and one of the examples in the paper... </summary> </entry> <entry><title>A Library Approach to Constant Template Parameters</title><link href="https://brevzin.github.io/c++/2025/08/02/ctp-reflection/" rel="alternate" type="text/html" title="A Library Approach to Constant Template Parameters" /><published>2025-08-02T00:00:00-05:00</published> <updated>2026-01-05T22:27:42-06:00</updated> <id>https://brevzin.github.io/c++/2025/08/02/ctp-reflection/</id> <content src="https://brevzin.github.io/c++/2025/08/02/ctp-reflection/" /> <author> <name>Barry Revzin</name> </author> <category term="c++" /> <summary> C++26 Status Quo I’d previously written about how difficult it is to extend support for using class types as constant template parameters. These are the template parameters formerly known as non-type template parameters. But it turns out that since C++98, we had three kinds of template parameters: type template parameters, non-type template parameters, and template template parameters. Whi... </summary> </entry> <entry><title>Reflecting JSON into C++ Objects</title><link href="https://brevzin.github.io/c++/2025/06/26/json-reflection/" rel="alternate" type="text/html" title="Reflecting JSON into C++ Objects" /><published>2025-06-26T00:00:00-05:00</published> <updated>2025-10-12T15:50:32-05:00</updated> <id>https://brevzin.github.io/c++/2025/06/26/json-reflection/</id> <content src="https://brevzin.github.io/c++/2025/06/26/json-reflection/" /> <author> <name>Barry Revzin</name> </author> <category term="c++" /> <summary> Last week, C++26 was finalized in Sofia, Bulgaria — and C++26 will include all of the reflection papers that we were pushing for: P2996R13: Reflection for C++26 P3394R4: Annotations for Reflection P3293R3: Splicing a Base Class Subobject P3491R3: define_static_{string,object,array} P1306R5: Expansion Statements P3096R12: Function Parameter Reflection in Reflection for C++26 P356... </summary> </entry> <entry><title>Type-based vs Value-based Reflection</title><link href="https://brevzin.github.io/c++/2025/06/09/reflection-ts/" rel="alternate" type="text/html" title="Type-based vs Value-based Reflection" /><published>2025-06-09T00:00:00-05:00</published> <updated>2025-06-09T18:06:46-05:00</updated> <id>https://brevzin.github.io/c++/2025/06/09/reflection-ts/</id> <content src="https://brevzin.github.io/c++/2025/06/09/reflection-ts/" /> <author> <name>Barry Revzin</name> </author> <category term="c++" /> <summary> Frequently, whenever the topic of Reflection comes up, I see a lot of complains specifically about the new syntax being added to support Reflection in C++26. I’ve always thought of that as being largely driven by unfamiliarity — this syntax is new, unfamiliar, and thus bad. I thought I’d take a different tactic in this post: let’s take a problem that can only be solved with Reflection and compa... </summary> </entry> <entry><title>Implementing a Struct of Arrays</title><link href="https://brevzin.github.io/c++/2025/05/02/soa/" rel="alternate" type="text/html" title="Implementing a Struct of Arrays" /><published>2025-05-02T00:00:00-05:00</published> <updated>2026-03-05T09:25:51-06:00</updated> <id>https://brevzin.github.io/c++/2025/05/02/soa/</id> <content src="https://brevzin.github.io/c++/2025/05/02/soa/" /> <author> <name>Barry Revzin</name> </author> <category term="c++" /> <summary> My CppCon 2025 talk, Practical Reflection, is now online, and goes over this example in more detail and more digressions. Check it out! Recently, I watched Andrew Kelley’s talk on Practical Data Oriented Design. It goes into some of the architectural changes he’s been making to the Zig compiler, with pretty significant performance benefit. Would definitely recommend checking out the talk, ... </summary> </entry> <entry><title>Using Token Sequences to Iterate Ranges</title><link href="https://brevzin.github.io/c++/2025/04/03/token-sequence-for/" rel="alternate" type="text/html" title="Using Token Sequences to Iterate Ranges" /><published>2025-04-03T00:00:00-05:00</published> <updated>2025-04-06T22:20:19-05:00</updated> <id>https://brevzin.github.io/c++/2025/04/03/token-sequence-for/</id> <content src="https://brevzin.github.io/c++/2025/04/03/token-sequence-for/" /> <author> <name>Barry Revzin</name> </author> <category term="c++" /> <summary> There was a StackOverflow question recently that led me to want to write a new post about Ranges. Specifically, I wanted to write about some situations in which Ranges do more work than it seems like they should have to. And then what we can do to avoid doing that extra work. I’ll offer solutions — one sane one, which you can already use today, and one pretty crazy one, which is using a languag... </summary> </entry> <entry><title>On the Ignorability of Attributes</title><link href="https://brevzin.github.io/c++/2025/03/25/attributes/" rel="alternate" type="text/html" title="On the Ignorability of Attributes" /><published>2025-03-25T00:00:00-05:00</published> <updated>2025-03-25T09:11:01-05:00</updated> <id>https://brevzin.github.io/c++/2025/03/25/attributes/</id> <content src="https://brevzin.github.io/c++/2025/03/25/attributes/" /> <author> <name>Barry Revzin</name> </author> <category term="c++" /> <summary> I was reading through the latest mailing, and a sentence caught my eye in P3661 (“Attributes, annotations, labels”), emphasis mine: Attributes turned out to be unsuitable for the role of “small features”, “small modifications to bigger features” or annotations from other languages. The need for a new kind of non-ignorable annotation pops up time and again in different places. Given that the... </summary> </entry> <entry><title>Polymorphic, Defaulted Equality</title><link href="https://brevzin.github.io/c++/2025/03/12/polymorphic-equals/" rel="alternate" type="text/html" title="Polymorphic, Defaulted Equality" /><published>2025-03-12T00:00:00-05:00</published> <updated>2025-03-14T08:55:53-05:00</updated> <id>https://brevzin.github.io/c++/2025/03/12/polymorphic-equals/</id> <content src="https://brevzin.github.io/c++/2025/03/12/polymorphic-equals/" /> <author> <name>Barry Revzin</name> </author> <category term="c++" /> <summary> I recently ran into an interesting bug that I thought was worth sharing. The Setup We have an abstract base class, with polymorphic equality: struct Base { virtual ~Base() = default; virtual auto operator==(Base const&amp;amp;) const -&amp;gt; bool = 0; }; And then we have a bunch of derived classes from this abstract base that implement equality in the expected way. If the two objects are... </summary> </entry> </feed>
