<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://www.sandordargo.com/</id><title>Sandor Dargo's Blog</title><subtitle>Sandor Dargo writes about about C++, software development, books and stoic philosophy applied to software craftsmanship</subtitle> <updated>2026-04-15T15:10:03+02:00</updated> <author> <name>Sandor Dargo</name> <uri>https://www.sandordargo.com/</uri> </author><link rel="self" type="application/atom+xml" href="https://www.sandordargo.com/feed.xml"/><link rel="alternate" type="text/html" hreflang="en-US" href="https://www.sandordargo.com/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Sandor Dargo </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>C++26: Structured bindings in conditions</title><link href="https://www.sandordargo.com/blog/2026/04/15/cpp26-structured-bindings-condition" rel="alternate" type="text/html" title="C++26: Structured bindings in conditions" /><published>2026-04-15T00:00:00+02:00</published> <updated>2026-04-15T06:25:04+02:00</updated> <id>https://www.sandordargo.com/blog/2026/04/15/cpp26-structured-bindings-condition</id> <content src="https://www.sandordargo.com/blog/2026/04/15/cpp26-structured-bindings-condition" /> <author> <name>Sandor Dargo</name> </author> <category term="dev" /> <summary> Structured bindings were introduced in C++17 as an alternative way of declaring variables. They allow you to decompose an object into a set of named variables, where the collection of those bindings conceptually represents the original object as a whole. // https://godbolt.org/z/97GaMajMP #include &amp;lt;cassert&amp;gt; #include &amp;lt;string&amp;gt; struct MyStruct { int num; std::string text; ... </summary> </entry> <entry><title>Freestanding standard library</title><link href="https://www.sandordargo.com/blog/2026/04/08/cpp-freestanding" rel="alternate" type="text/html" title="Freestanding standard library" /><published>2026-04-08T00:00:00+02:00</published> <updated>2026-04-08T00:00:00+02:00</updated> <id>https://www.sandordargo.com/blog/2026/04/08/cpp-freestanding</id> <content src="https://www.sandordargo.com/blog/2026/04/08/cpp-freestanding" /> <author> <name>Sandor Dargo</name> </author> <category term="dev" /> <summary> In some earlier articles, we used the term freestanding. We said that a freestanding implementation is one that operates without the support of a hosted operating system. Think embedded systems, OS kernels, or bare-metal environments where heap allocation, system calls, and exception support are typically unavailable. The C++ standard defines a minimal subset of the language and library that mu... </summary> </entry> <entry><title>What happens when a destructor throws</title><link href="https://www.sandordargo.com/blog/2026/04/01/when-a-destructor-throws" rel="alternate" type="text/html" title="What happens when a destructor throws" /><published>2026-04-01T00:00:00+02:00</published> <updated>2026-04-01T00:00:00+02:00</updated> <id>https://www.sandordargo.com/blog/2026/04/01/when-a-destructor-throws</id> <content src="https://www.sandordargo.com/blog/2026/04/01/when-a-destructor-throws" /> <author> <name>Sandor Dargo</name> </author> <category term="dev" /> <summary> Recently I wrote about the importance of finding joy in our jobs on The Dev Ladder. Mastery and deep understanding are key elements in finding that joy, especially now that generating code is cheap and increasingly done better by AI than by us. Then a memory surfaced. I frequently ask during interviews — as part of a code review exercise — what happens when a destructor throws. Way too many ca... </summary> </entry> <entry><title>C++26: A User-Friendly assert() macro</title><link href="https://www.sandordargo.com/blog/2026/03/25/cpp26-user-friendly-assert" rel="alternate" type="text/html" title="C++26: A User-Friendly assert() macro" /><published>2026-03-25T00:00:00+01:00</published> <updated>2026-03-25T16:49:39+01:00</updated> <id>https://www.sandordargo.com/blog/2026/03/25/cpp26-user-friendly-assert</id> <content src="https://www.sandordargo.com/blog/2026/03/25/cpp26-user-friendly-assert" /> <author> <name>Sandor Dargo</name> </author> <category term="dev" /> <summary> C++26 is bringing some long-overdue changes to assert(). But why are those changes needed? And when do we actually use assert, anyway? At its core, assert() exists to validate runtime conditions. If the given expression evaluates to false, the program aborts. I’m almost certain you’ve used it before — at work, in personal projects, or at the very least in examples and code snippets. So what’s... </summary> </entry> <entry><title>C++26: Span improvements</title><link href="https://www.sandordargo.com/blog/2026/03/18/cpp26-span-improvements" rel="alternate" type="text/html" title="C++26: Span improvements" /><published>2026-03-18T00:00:00+01:00</published> <updated>2026-03-25T09:08:42+01:00</updated> <id>https://www.sandordargo.com/blog/2026/03/18/cpp26-span-improvements</id> <content src="https://www.sandordargo.com/blog/2026/03/18/cpp26-span-improvements" /> <author> <name>Sandor Dargo</name> </author> <category term="dev" /> <summary> A while back, we talked about how using std::span instead of C-style arrays makes your code safer and easier to reason about. std::span, added in C++20, is a non-owning view over a contiguous sequence of objects - think of it as a string_view, but for arrays. C++23 continued building on this foundation, bringing related utilities such as &amp;lt;spanstream&amp;gt; and mdspan, the multidimensional cousi... </summary> </entry> </feed>
