PageSourceSearch

https://www.cppstories.com/p/start-here/

html cppstories.com collected 2026-10-02 02:45:21 UTC 41,686 bytes, 731 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-us">
3  <head>
4  <meta charset="utf-8">
5  <title>Start here - C&#43;&#43; Stories</title>
6  <meta name="generator" content="Hugo 0.107.0">
7  <meta name="viewport" content="width=device-width, initial-scale=1">
8  <meta name="author" content="">
9  
10  <meta name="description" content="Hello there!
11My name is Bartek and this is my technical blog. I write mostly about native coding in C&#43;&#43;.
12You can read more about the blog itself in the About page.
13To see all blog posts please go to the Archive Page where you can sort by year, a tag or search.">
14  
15  <meta name="keywords" content="">
16  <meta property="og:site_name" content="C&#43;&#43; Stories">
17  <meta property="og:title" content="Start here">
18  <meta property="og:url" content="https://www.cppstories.com/p/start-here/">
19  
20  <meta property="og:image" content="https://www.cppstories.com/image/theme/og.png">
21  
22  
23  <meta property="og:description" content="Hello there!
24My name is Bartek and this is my technical blog. I write mostly about native coding in C&#43;&#43;.
25You can read more about the blog itself in the About page.
26To see all blog posts please go to the Archive Page where you can sort by year, a tag or search.">
27  
28  <meta property="og:type" content="blog">
29  <meta name="twitter:card" content="summary_large_image">
30  <meta name="twitter:creator" content="@">
31  <meta name="twitter:title" content="Start here">
32  <meta name="twitter:url" content="https://www.cppstories.com/p/start-here/">
33  
34  <meta name="twitter:description" content="Hello there!
35My name is Bartek and this is my technical blog. I write mostly about native coding in C&#43;&#43;.
36You can read more about the blog itself in the About page.
37To see all blog posts please go to the Archive Page where you can sort by year, a tag or search.">
38  
39  
40  <meta name="twitter:image:src" content="https://www.cppstories.com/image/theme/og.png">
41  
42  <link rel="shortcut icon" href="https://www.cppstories.com/image/theme/favicon.ico">
43  
44  
45  <link rel="stylesheet" href="/css/pure-min.css">
46  <link rel="stylesheet" href="/css/grids-responsive-min.css">
47  
48  
49  <link rel="stylesheet" href="/css/bootstrap.min.css">
50  
51  <link rel="stylesheet" href="/css/style.css">
52  
53  <link rel="alternate" href="https://www.cppstories.com/index.xml" type="application/rss+xml" title="C&#43;&#43; Stories">
54  
55  
55<script src="/js/jquery.min.js"></script>
55
56  
57  
58  
58<script src="/js/bootstrap.min.js"></script>
58
59  
60</head>
61
62  <body>
63    <div id="wrap" class="wrap">
64      
65
66<header class="navbar-fixed-top header" id="navbar-content">
67
68
69  <div class="site-title"><a href="/">C&#43;&#43; Stories</a></div>
70  
71  <p class="site-desc">Stay up-to-date with Modern C&#43;&#43;</p>
72
73  
74<nav class="navbar navbar-default navbar-custom">
75    <div class="container-fluid">
76        
77        <div class="navbar-header page-scroll">
78             <button type="button" class="navbar-toggle content-page" style="float:right;">
79              <span class="sr-only">Toggle navigation</span>
80              <span class="icon-bar"></span>
81              <span class="icon-bar"></span>
82              <span class="icon-bar"></span>
83            </button>
84             <h1 class="mobile-title" style="float:left;padding-left:0.3em;"><a href="https://www.cppstories.com">C&#43;&#43; Stories</a></h1>
85        </div>
86
87        
88        
89        <div id="huxblog_navbar">
90            <div class="navbar-collapse">
91                <ul id="nav" class="nav navbar-nav navbar-center">
92                    <li class="nav-item">
93                        <a href="/">
94                        
95                        <svg width="1.5em" height="1.5em" viewBox="0 0 16 16" class="bi bi-house-door-fill" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
96  <path d="M6.5 10.995V14.5a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .146-.354l6-6a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 .146.354v7a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5V11c0-.25-.25-.5-.5-.5H7c-.25 0-.5.25-.5.495z"/>
97  <path fill-rule="evenodd" d="M13 2.5V6l-2-2V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5z"/>
98</svg>
99                        
100                        </a>
101                    </li>
102                    <li class="nav-item">
103                        <a href="/p/start-here/">Start Here</a>
104                    </li>
105                    <li class="nav-item">
106                        <a href="/p/about/">Author</a>
107                    </li>
108                    <li class="nav-item">
109                        <a href="/p/resources/">Resources</a>
110                    </li>
111                    <li class="nav-item">
112                        <a href="/p/archive/">Archives</a>
113                    </li>
114                    <li class="nav-item">
115                        <a href="/p/privacy/">Privacy</a>
116                    </li>
117                     <li class="nav-item special">
118                        <a href="/p/extra-patreon-content/">Premium</a>
119                    </li>
120                    <li class="nav-item">
121                        <a target="_blank" href="https://leanpub.com/cpp17indetail?utm_source=blog&utm_campaign=topmenu">My Book</a>
122                    </li>                   
123                    
124                </ul>
125 
126            </div>
127        </div>
128        
129    </div>
130    
131</nav>
132<script>
133
134    var toggle = document.querySelector('.navbar-toggle');
135    var navbar = document.querySelector('#huxblog_navbar');
136    var collapse = document.querySelector('.navbar-collapse');
137
138    
139    $(function(){
140    var current = location.pathname === '/' || location.pathname.includes('page') ? '/p/home' : location.pathname ;
141    $('#nav li a').each(function(){
142        var $this = $(this);
143        var attrHref = $this.attr('href') === '/' || $this.attr('href').includes('page') ? '/p/home' : $this.attr('href') ;
144        
145        if(attrHref.indexOf(current) !== -1){
146            $this.addClass('active');
147        }
148    })
149})
150
151
152  window.addEventListener('resize', function(){
153    if(window.matchMedia("(max-width:768px)").matches) {
154      collapse.style.display = "none"
155	  
156	  if(document.getElementById("navbar-home")) {
157          document.getElementById("navbar-home").style.top = "0";
158      } else {
159          document.getElementById("navbar-content").style.top = "0";
160      }
161    }
162    else {
163      collapse.style.display = "block"
164    }
165  })
166
167
168  toggle.addEventListener('click', handleMagic)
169  function handleMagic(e){
170    e.preventDefault();
171      if (navbar.className.indexOf('in') > 0) {
172      
173          navbar.className = " ";
174          
175          setTimeout(function(){
176              
177              if(navbar.className.indexOf('in') < 0 ) {
178                  collapse.style.display = "none"
179              }
180          },100)
181      } else {
182      
183          collapse.style.display = "block"
184          navbar.className += " in";
185      }
186  }
187</script>
187
188
189  
190  <div class="share">    
191    <a href="https://www.cppstories.com/index.xml" target="blank">
192      <svg viewBox="0 0 72 72" ><g fill="none" fill-rule="evenodd"><path d="M8,72 L64,72 C68.418278,72 72,68.418278 72,64 L72,8 C72,3.581722 68.418278,-8.11624501e-16 64,0 L8,0 C3.581722,8.11624501e-16 -5.41083001e-16,3.581722 0,8 L0,64 C5.41083001e-16,68.418278 3.581722,72 8,72 Z" fill="#FF9A00"/><path d="M14.0004714,51.7142857 C14.0004714,48.243 16.8148698,45.4285714 20.2861184,45.4285714 C23.7573669,45.4285714 26.5717653,48.243 26.5717653,51.7142857 C26.5717653,55.1855714 23.7573669,58 20.2861184,58 C16.8148698,58 14.0004714,55.1855714 14.0004714,51.7142857 Z M58,58 L49.6196612,58 C49.6196612,38.3587143 33.6415467,22.3804286 14.0004714,22.3804286 L14.0004714,14 C38.2614972,14 58,33.7387143 58,58 Z M43.3335429,58 L34.9532041,58 C34.9532041,46.4468571 25.5530191,37.0481429 14,37.0481429 L14,28.6661429 C30.174541,28.6661429 43.3335429,41.8252857 43.3335429,58 Z" fill="#FFF"/></g></svg>
193    </a>
194    <a href="https://twitter.com/fenbf" target="_blank">
195      <svg viewBox="0 0 512 512" ><g><path d="M448,512l-384,0c-35.328,0 -64,-28.672 -64,-64l0,-384c0,-35.328 28.672,-64 64,-64l384,0c35.328,0 64,28.672 64,64l0,384c0,35.328 -28.672,64 -64,64Z" id="Dark_Blue" style="fill:#1da1f2;fill-rule:nonzero;"/><path d="M196.608,386.048c120.704,0 186.752,-100.096 186.752,-186.752c0,-2.816 0,-5.632 -0.128,-8.448c12.8,-9.216 23.936,-20.864 32.768,-34.048c-11.776,5.248 -24.448,8.704 -37.76,10.368c13.568,-8.064 23.936,-20.992 28.928,-36.352c-12.672,7.552 -26.752,12.928 -41.728,15.872c-12.032,-12.8 -29.056,-20.736 -47.872,-20.736c-36.224,0 -65.664,29.44 -65.664,65.664c0,5.12 0.64,10.112 1.664,14.976c-54.528,-2.688 -102.912,-28.928 -135.296,-68.608c-5.632,9.728 -8.832,20.992 -8.832,33.024c0,22.784 11.648,42.88 29.184,54.656c-10.752,-0.384 -20.864,-3.328 -29.696,-8.192l0,0.896c0,31.744 22.656,58.368 52.608,64.384c-5.504,1.536 -11.264,2.304 -17.28,2.304c-4.224,0 -8.32,-0.384 -12.288,-1.152c8.32,26.112 32.64,45.056 61.312,45.568c-22.528,17.664 -50.816,28.16 -81.536,28.16c-5.248,0 -10.496,-0.256 -15.616,-0.896c28.928,18.432 63.488,29.312 100.48,29.312" id="Logo__x2014__FIXED" style="fill:#fff;fill-rule:nonzero;"/></g></svg>
196    </a>
197    <a href="https://www.linkedin.com/in/bartlomiejfilipek" target="_blank">
198      <svg viewBox="0 0 32 32" ><g><path d="M32,30c0,1.104-0.896,2-2,2H2c-1.104,0-2-0.896-2-2V2c0-1.104,0.896-2,2-2h28c1.104,0,2,0.896,2,2V30z" fill="#007BB5"/><g><rect fill="#FFFFFF" height="14" width="4" x="7" y="11"/><path d="M20.499,11c-2.791,0-3.271,1.018-3.499,2v-2h-4v14h4v-8c0-1.297,0.703-2,2-2c1.266,0,2,0.688,2,2v8h4v-7    C25,14,24.479,11,20.499,11z" fill="#FFFFFF"/><circle cx="9" cy="8" fill="#FFFFFF" r="2"/></g></g><g/><g/><g/><g/><g/><g/></svg>
199    </a>          
200  </div> 
201  
202  <div class="searchbox">
203      <form action="https://duckduckgo.com/" method="get">
204         <input type="hidden" name="sites" value="cppstories.com">
205         <input type="search" name="q" placeholder="Search...">
206         <input type="submit" name="submit" class="submit" value="Search">
207      </form>    
208  </div>
209  
210    <div class="theme-switch-wrapper"><label class="theme-switch indicate" for="checkbox"><input type="checkbox" id="checkbox" /> <i></i> </label> </div>
211  
212</header>
213
214
215
216<script>
217    
218    var prevScrollpos = window.pageYOffset;
219    window.onscroll = function() {
220	
221	if( $('.navbar-collapse').is(':hidden') )
222	    return;
223	
224    var y = window.scrollY;
225    var currentScrollPos = window.pageYOffset;
226    if (prevScrollpos > currentScrollPos && y < 100) {
227      if(document.getElementById("navbar-home")) {
228          document.getElementById("navbar-home").style.top = "0";
229      } else {
230          document.getElementById("navbar-content").style.top = "0";
231      }
232	  
233      document.getElementsByClassName("right-panel")[0].style.top = '125px'
234      document.getElementsByClassName("left-panel")[0].style.top = '125px'
235    } else {
236      if(document.getElementById("navbar-home")) {
237          document.getElementById("navbar-home").style.top = "-70px";
238      } else {
239          document.getElementById("navbar-content").style.top = "-70px";
240      }
241	  
242      document.getElementsByClassName("right-panel").length > 0 ? document.getElementsByClassName("right-panel")[0].style.top = '50px' : null;
243      document.getElementsByClassName("left-panel").length > 0 ? document.getElementsByClassName("left-panel")[0].style.top = '50px' : null;
244    }
245    prevScrollpos = currentScrollPos;
246    }
247
248    
249const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
250
251const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
252
253if (currentTheme) {
254    document.documentElement.setAttribute('data-theme', currentTheme);
255
256    if (currentTheme === 'dark') {
257        toggleSwitch.checked = true;
258    }
259}
260
261function switchTheme(e) {
262    if (e.target.checked) {
263        document.documentElement.setAttribute('data-theme', 'dark');
264        localStorage.setItem('theme', 'dark'); 
265    }
266    else {
267        document.documentElement.setAttribute('data-theme', 'light');
268        localStorage.setItem('theme', 'light'); 
269    }    
270}
271
272toggleSwitch.addEventListener('change', switchTheme, false);
273
274
275
276</script>
276
277
278      
279<main class="main main--single">
280  
281  <article class="post">
282    <div class="mobile-banner">
283      <a href="https://leanpub.com/cpp17indetail?utm_source=blog&amp;utm_campaign=adside">
284        <img src="/images/cpp17indetailtop2.png">
285      </a>
286    </div>
287      <div class="post-content">
288      <h1 class="post__title static"><a href="."> Start here </a> </h1>
289      
290     <div class="toc-post-top">
291      
292      Contents
293      <nav id="TableOfContents">
294  <ul>
295    <li><a href="#c">C++</a>
296      <ul>
297        <li><a href="#c26">C++26</a></li>
298        <li><a href="#c23">C++23</a></li>
299        <li><a href="#c20">C++20</a></li>
300        <li><a href="#c17">C++17</a></li>
301        <li><a href="#other-c-articles">Other C++ Articles</a></li>
302        <li><a href="#status">Status</a></li>
303      </ul>
304    </li>
305    <li><a href="#opengl--gpu">OpenGL &amp; GPU</a></li>
306    <li><a href="#performance">Performance</a></li>
307    <li><a href="#projects">Projects</a>
308      <ul>
309        <li><a href="#flexible-particle-system">Flexible Particle System</a></li>
310      </ul>
311    </li>
312    <li><a href="#book-reviews">Book Reviews</a></li>
313    <li><a href="#other">Other</a></li>
314    <li><a href="#blogging-and-stats">Blogging and stats</a></li>
315  </ul>
316</nav>
317      
318    </div>
319      
320      
321      
322      
323        <p>Hello there!</p>
324<p>My name is Bartek and this is my technical blog. I write mostly about native coding in C++.</p>
325<p>You can read more about the blog itself in <a href="http://www.cppstories.com/p/about.html">the About page</a>.</p>
326<p>To see all blog posts please go to the <a href="https://www.cppstories.com/p/archive/">Archive Page</a> where you can sort by year, a tag or search.</p>
327<p>Here are the top stories that you might want to read first:</p>
328<blockquote class="hint info">
329
330  Last updated in September 2026. The C++ sections below are ordered from the newest standard to the oldest one.
331</blockquote>
332<h2 id="c">
333C++ 
334  
335<a class="hash-link" href="#c" aria-hidden="true">
336<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
337    </a>&nbsp;
338    
339</h2>
340
341<p>I use C++ on a daily basis, so that’s why it dominates my blog posts.</p>
342<h3 id="c26">
343C++26 
344  
345<a class="hash-link" href="#c26" aria-hidden="true">
346<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
347    </a>&nbsp;
348    
349</h3>
350
351<p>As of late 2026, C++26 is almost ready, here are some early experiments:</p>
352<ul>
353<li><a href="https://www.cppstories.com/2025/cpp26-safety-temp/">Improving Code Safety in C++26: Managers and Dangling References</a></li>
354<li><a href="https://www.cppstories.com/2025/join_concat_ranges/">How to join or concat ranges, C++26</a></li>
355<li><a href="https://www.cppstories.com/2025/structured-bindings-cpp26-updates/">Structured bindings in C++17, 8 years later</a></li>
356<li><a href="https://www.cppstories.com/2026/hardening-experiments/">C++26: Standard Library Hardening Experiments</a></li>
357</ul>
358<h3 id="c23">
359C++23 
360  
361<a class="hash-link" href="#c23" aria-hidden="true">
362<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
363    </a>&nbsp;
364    
365</h3>
366
367<ul>
368<li><a href="https://www.cppstories.com/2024/cpp23_lang/">C++23 Language Features and Reference Cards</a></li>
369<li><a href="https://www.cppstories.com/2024/cpp23_lib/">C++23 Library Features and Reference Cards</a></li>
370<li><a href="https://www.cppstories.com/2024/cpp23_more_examples/">8 More C++23 Examples</a></li>
371<li><a href="https://www.cppstories.com/2024/expected-cpp23/">Using <code>std::expected</code> from C++23</a></li>
372<li><a href="https://www.cppstories.com/2025/cpp23_mdspan/">Details of <code>std::mdspan</code> from C++23</a></li>
373<li><a href="https://www.cppstories.com/2025/ranges_split_chunk/">How to Split Ranges in C++23</a></li>
374<li><a href="https://www.cppstories.com/2026/stacktrace/">Practical <code>std::stacktrace</code> in C++23</a></li>
375</ul>
376<p>And see a growing list of articles under the C++23 tag in the Archives:</p>
377<p><a href="https://www.cppstories.com/tags/cpp23/">Cpp23 - C++ Stories</a></p>
378<h3 id="c20">
379C++20 
380  
381<a class="hash-link" href="#c20" aria-hidden="true">
382<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
383    </a>&nbsp;
384    
385</h3>
386
387<ul>
388<li><a href="https://www.cppstories.com/2022/ranges-composition/">C++20 Ranges: The Key Advantage - Algorithm Composition - C++ Stories</a></li>
389<li><a href="https://www.cppstories.com/2022/20-smaller-cpp20-features/">20 Smaller yet Handy C++20 Features - C++ Stories</a></li>
390<li><a href="https://www.cppstories.com/2021/concepts-callables/">Predefined C++20 Concepts: Callables</a></li>
391<li><a href="https://www.cppstories.com/2021/concepts-intro/">C++20 Concepts - a Quick Introduction</a></li>
392<li><a href="https://www.cppstories.com/2018/03/ifconstexpr/">Simplify Code with if constexpr and Concepts in C++17/C++20</a></li>
393<li><a href="https://www.cppstories.com/2021/constexpr-new-cpp20/">constexpr Dynamic Memory Allocation, C++20</a></li>
394<li><a href="https://www.cppstories.com/2020/10/complex-ranges-algorithms.html/">Increased Complexity of C++20 Range Algorithms Declarations - Is It Worth?</a></li>
395<li><a href="https://www.cppstories.com/2020/08/string-prefix-cpp20.html/">How to Check String or String View Prefixes and Suffixes in C++20</a></li>
396<li><a href="https://www.cppstories.com/2020/08/lambda-syntax.html/">Lambda Week: Syntax changes, C++11 to C++20</a></li>
397<li><a href="https://www.cppstories.com/2016/02/notes-on-c-sfinae/">Notes on C++ SFINAE, Modern C++ and C++20 Concepts</a></li>
398<li><a href="https://www.cppstories.com/2020/02/extra-format-cpp20.html/">An Extraterrestrial Guide to C++20 Text Formatting</a></li>
399</ul>
400<p>And see a growing list of articles under the C++20 tag in the Archives:</p>
401<p><a href="https://www.cppstories.com/tags/cpp20/">Cpp20 - C++ Stories</a></p>
402<h3 id="c17">
403C++17 
404  
405<a class="hash-link" href="#c17" aria-hidden="true">
406<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
407    </a>&nbsp;
408    
409</h3>
410
411<p>Here&rsquo;s a mega long article, with all of the features (each with a description and an example):</p>
412<ul>
413<li><a href="http://www.cppstories.com/2017/01/cpp17features.html">C++17 Features</a></li>
414</ul>
415<p>And another article on smaller features:</p>
416<ul>
417<li><a href="https://www.cppstories.com/2019/08/17smallercpp17features/">17 Smaller but Handy C++17 Features - C++ Stories</a></li>
418</ul>
419<p>The first series about the features:</p>
420<ul>
421<li><a href="http://www.cppstories.com/2017/05/cpp17-details-fixes-deprecation.html">Fixes and deprecation</a></li>
422<li><a href="http://www.cppstories.com/2017/06/cpp17-details-clarifications.html">Language clarification</a></li>
423<li><a href="http://www.cppstories.com/2017/06/cpp17-details-templates.htm">Templates</a></li>
424<li><a href="http://www.cppstories.com/2017/07/cpp17-in-details-attributes.html">Attributes</a></li>
425<li><a href="http://www.cppstories.com/2017/07/cpp17-details-simplifications.html">Simplification</a></li>
426<li><a href="http://www.cppstories.com/2017/08/cpp17-details-filesystem.html">Library changes - Filesystem</a></li>
427<li><a href="http://www.cppstories.com/2017/08/cpp17-details-parallel.html">Library changes - Parallel STL</a></li>
428<li><a href="http://www.cppstories.com/2017/09/cpp17-details-utils.html">Library changes - Utils</a></li>
429<li><a href="http://www.cppstories.com/2017/09/c17-in-detail-summary-bonus.html">Wrap up, Bonus</a> - with a free ebook! :)</li>
430</ul>
431<p>The Second series about the STL changes:</p>
432<ul>
433<li><a href="https://www.cppstories.com/2018/04/refactoring-with-c17-stdoptional.html">Refactoring with <code>std::optional</code></a></li>
434<li><a href="https://www.cppstories.com/2018/05/using-optional.html">Using <code>std::optional</code></a></li>
435<li><a href="https://www.cppstories.com/2018/05/errors-and-optional.html">Error handling and <code>std::optional</code></a></li>
436<li><a href="https://www.cppstories.com/2018/06/variant.html">About<code>std::variant</code></a></li>
437<li><a href="https://www.cppstories.com/2018/06/any.html">About<code>std::any</code></a></li>
438<li><a href="https://www.cppstories.com/2018/07/in-place-cpp17.html">In place construction for <code>std::optional</code>, <code>std::variant</code> and <code>std::any</code></a></li>
439<li><a href="https://www.cppstories.com/2018/07/string-view-perf.html"><code>std::string_view</code> Performance</a></li>
440<li><a href="https://www.cppstories.com/2018/08/searchers.html">C++17 string searchers</a></li>
441<li>Conversion utilities</li>
442<li>Working with <code>std::filesystem</code></li>
443<li>Extra:
444<ul>
445<li><a href="https://www.cppstories.com/2018/05/optional-contest.html">
445Show me your code: <code>std::optional</code></a></li>
446<li><a href="https://www.cppstories.com/2018/05/optional-contest-results.html">Results: Show me your core: <code>std::optional</code></a></li>
447<li><a href="https://www.cppstories.com/2018/07/menu-cpp17-example.html">Menu Class - Example of Modern C++17 STL features</a></li>
448</ul>
449</li>
450<li><a href="https://www.cppstories.com/2020/04/variant-virtual-polymorphism.html/">Runtime Polymorphism with std::variant and std::visit</a></li>
451</ul>
452<h3 id="other-c-articles">
453Other C++ Articles 
454  
455<a class="hash-link" href="#other-c-articles" aria-hidden="true">
456<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
457    </a>&nbsp;
458    
459</h3>
460
461<ul>
462<li><a href="https://www.cppstories.com/2021/filter-cpp-containers/">12 Different Ways to Filter Containers in Modern C++</a></li>
463<li><a href="http://www.cppstories.com/2016/02/notes-on-c-sfinae.html">Notes on C++ SFINAE</a></li>
464<li><a href="http://www.cppstories.com/2016/04/custom-deleters-for-c-smart-pointers.html">Custom Deleters for C++ Smart Pointers</a></li>
465<li><a href="http://www.cppstories.com/2013/02/smart-pointers-gotchas.html">Smart pointers gotchas</a></li>
466<li><a href="http://www.cppstories.com/2014/12/top-5-beautiful-c-std-algorithms.html">Top 5 Beautiful C++ std Algorithms Examples</a></li>
467<li><a href="http://www.cppstories.com/2015/02/non-static-data-members-initialization.html">Non Static Data Members Initialization</a></li>
468<li><a href="http://www.cppstories.com/2016/06/11-debugging-tips-that-will-save-your.html">11 Debugging Tips That Will Save Your Time</a></li>
469<li><a href="http://www.cppstories.com/2013/02/why-is-it-building-so-long.html">Why is it building so long?</a></li>
470<li><a href="http://www.cppstories.com/2016/06/c-core-coding-guidelines.html">C++ (Core) Coding Guidelines</a></li>
471<li><a href="http://www.cppstories.com/2014/01/tasks-with-stdfuture-and-stdasync.html">Tasks with std::future and std::async</a></li>
472<li><a href="http://www.cppstories.com/2013/05/auto-keyword-in-cpp11.html">Auto keyword in C++11</a></li>
473<li><a href="http://www.cppstories.com/2016/04/visual-studio-productivity-tips.html">Visual Studio C++ Productivity Tips</a></li>
474<li><a href="http://www.cppstories.com/2014/07/quick-case-char-pointer-vs-char-array.html">Quick case: Char Pointer vs Char Array in C++</a></li>
475<li><a href="http://www.cppstories.com/2013/03/include-little-toolkit.html">#Include little toolkit</a></li>
476<li><a href="http://www.cppstories.com/2013/03/forward-declaration-and-pointer.html">Forward Declaration And a Pointer</a></li>
477</ul>
478<h3 id="status">
479Status 
480  
481<a class="hash-link" href="#status" aria-hidden="true">
482<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
483    </a>&nbsp;
484    
485</h3>
486
487<p>At the end of the year I write about C++ status. Those texts summarise the major events of a given year, compiler support of modern features, standard updates, and the general direction of the language.</p>
488<ul>
489<li><a href="https://www.cppstories.com/2022/cpp-status-2022/">C++ at the end of 2022</a></li>
490<li><a href="https://www.cppstories.com/2021/cpp-status-2021/">C++ at the end of 2021</a></li>
491<li><a href="https://www.cppstories.com/2020/12/cpp-status-2020/">C++ Status at the end of 2020</a></li>
492<li><a href="https://www.cppstories.com/2019/12/cpp-status-2019.html/">C++ Status at the end of 2019</a></li>
493<li><a href="https://www.cppstories.com/2018/12/c-at-end-of-2018/">C++ Status at the end of 2018</a></li>
494<li><a href="http://www.cppstories.com/2017/12/cpp-status-2017.html">C++ Status at the end of 2017</a></li>
495<li><a href="http://www.cppstories.com/2016/12/c-status-at-end-of-2016.html">C++ Status at the end of 2016</a></li>
496<li><a href="http://www.cppstories.com/2015/12/c-status-at-end-of-2015.html">C++ Status at the end of 2015</a></li>
497<li><a href="http://www.cppstories.com/2014/12/c-status-at-end-of-2014.html">C++ Status at the end of 2014</a></li>
498<li><a href="http://www.cppstories.com/2013/12/c-status-at-end-of-2013.html">C++ Status at the end of 2013</a></li>
499<li><a href='http://www.cppstories.com/2012/12/c-at-end-of-2012.html/'>C++ Status at the end of 2012</a></li>
500</ul>
501<h2 id="opengl--gpu">
502OpenGL &amp; GPU 
503  
504<a class="hash-link" href="#opengl--gpu" aria-hidden="true">
505<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
506    </a>&nbsp;
507    
508</h2>
509
510<ul>
511<li><a href="http://www.cppstories.com/2015/01/persistent-mapped-buffers-in-opengl.html">Persistent Mapped Buffers in OpenGL</a></li>
512<li><a href="http://www.cppstories.com/2015/01/persistent-mapped-buffers-benchmark.html">Persistent Mapped Buffers, Benchmark Results</a></li>
513<li><a href="http://www.cppstories.com/2014/07/flexible-particle-system-opengl-renderer.html">Flexible particle system - OpenGL Renderer</a></li>
514<li><a href="http://www.cppstories.com/2014/08/opengl-45.html">OpenGL 4.5</a></li>
515<li><a href="http://www.codeproject.com/Articles/771225/Learning-Modern-OpenGL">Learning Modern OpenGL</a> @Codeproject - one of my best articles, that landed on external site instead of this blog.</li>
516<li><a href="http://www.cppstories.com/2013/09/glgeneratemipmap-plus-soil-library.html">glGenerateMipmap Plus SOIL library, OpenGL</a></li>
517<li><a href="http://www.cppstories.com/2013/09/digging-into-soil-library-for-opengl.html">Digging into SOIL Library for OpenGL</a></li>
518<li><a href="http://www.cppstories.com/2012/07/the-spark-particle-library.html">The SPARK Particle Library</a></li>
519<li><a href='http://www.cppstories.com/2012/06/select-mouse-opengl.html/'>Select + Mouse + OpenGL</a></li>
520<li><a href="http://www.cppstories.com/2012/06/aniso.html">Quick example of Anisotropic Filtering in OpenGL</a></li>
521<li><a href='http://www.cppstories.com/2012/03/fps-limit.html/'>FPS limit</a></li>
522</ul>
523<h2 id="performance">
524Performance 
525  
526<a class="hash-link" href="#performance" aria-hidden="true">
527<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
528    </a>&nbsp;
529    
530</h2>
531
532<ul>
533<li><a href="http://www.cppstories.com/2016/01/micro-benchmarking-libraries-for-c.html">Micro benchmarking libraries for C++</a></li>
534<li><a href="http://www.cppstories.com/2017/05/please-stop-with-performance.html">Please stop with performance optimizations!</a></li>
535<li><a href="http://www.cppstories.com/2017/05/curius-case-of-branch-performance.html">Curious case of branch performance</a></li>
536<li><a href="http://www.cppstories.com/2017/04/packing-bools.html">Packing Bools, Performance tests</a></li>
537<li><a href="http://www.cppstories.com/2016/05/google-benchmark-library.html">Google benchmark library</a></li>
538<li><a href="http://www.cppstories.com/2016/01/simple-performance-timer.html">Simple Performance Timer</a></li>
539<li><a href="http://www.cppstories.com/2014/05/vector-of-objects-vs-vector-of-pointers.html">Vector of Objects vs Vector of Pointers Updated</a></li>
540<li><a href='http://www.cppstories.com/2012/05/float-vs-double.html/'>Float vs Double</a></li>
541<li><a href="http://www.cppstories.com/2012/03/avx-start.html">AVX Start</a></li>
542</ul>
543<h2 id="projects">
544Projects 
545  
546<a class="hash-link" href="#projects" aria-hidden="true">
547<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
548    </a>&nbsp;
549    
550</h2>
551
552<ul>
553<li><a href="http://www.cppstories.com/2016/03/the-matrix-updated.html">The Matrix Updated</a></li>
554<li><a href="http://www.cppstories.com/2014/01/simple-water-simulation.html">Simple Water Simulation</a></li>
555<li><a href="http://www.cppstories.com/2013/09/glgeneratemipmap-plus-soil-library.html">glGenerateMipmap Plus SOIL library, OpenGL</a></li>
556<li><a href="http://www.cppstories.com/2012/12/opengl-startup-v30.html">OpenGL startup V3.0</a></li>
557</ul>
558<h3 id="flexible-particle-system">
559Flexible Particle System 
560  
561<a class="hash-link" href="#flexible-particle-system" aria-hidden="true">
562<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
563    </a>&nbsp;
564    
565</h3>
566
567<p>I’ve always wanted to create efficient and easy to use particle system. I’ve described my attempts to do it in the following series:</p>
568<ul>
569<li><a href="http://www.cppstories.com/2014/03/three-particle-effects.html">Initial Particle Demo</a></li>
570<li><a href="http://www.cppstories.com/2014/04/flexible-particle-system-start.html">Introduction</a></li>
571<li><a href="http://www.cppstories.com/2014/04/flexible-particle-system-container.html">Particle Container 1 - problems</a></li>
572<li><a href="http://www.cppstories.com/2014/04/flexible-particle-system-container-2.html">Particle Container 2 - implementation</a></li>
573<li><a href="http://www.cppstories.com/2014/05/flexible-particle-system-emitter-and.html">Generators &amp; Emitters</a></li>
574<li><a href="http://www.cppstories.com/2014/06/flexible-particle-system-updaters.html">Updaters</a></li>
575<li><a href="http://www.cppstories.com/2014/07/flexible-particle-system-opengl-renderer.html">Renderer</a></li>
576<li><a href="http://www.cppstories.com/2014/07/flexible-particle-system-how-to-start.html">Introduction to Software Optimization</a></li>
577<li><a href="http://www.cppstories.com/2014/09/flexible-particle-system-tools.html">Tools Optimizations</a></li>
578<li><a href="http://www.cppstories.com/2014/10/flexible-particle-system-code.html">Code Optimizations</a></li>
579<li><a href="http://www.cppstories.com/2015/03/flexible-particle-system-renderer.html">Renderer Optimizations</a></li>
580<li><a href="http://www.cppstories.com/2015/04/flexible-particle-system-summary.html">Summary</a></li>
581</ul>
582<h2 id="book-reviews">
583Book Reviews 
584  
585<a class="hash-link" href="#book-reviews" aria-hidden="true">
586<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
587    </a>&nbsp;
588    
589</h2>
590
591<ul>
592<li><a href="https://www.cppstories.com/2018/09/procpp4th/">Professional C++ 4th Edition</a> by Marc Gregoire</li>
593<li><a href="https://www.cppstories.com/2018/05/tmplbook2nd-review/">C++ Templates - The Complete Guide 2nd Edition</a> by David Vandevoorde, Nicolai M. Josuttis and Douglas Gregor</li>
594<li><a href="http://www.cppstories.com/2017/07/complete-software-developers.html">The Complete Software Developer’s Career Guide, by John Sonmez</a></li>
595<li><a href="http://www.cppstories.com/2017/06/modern-c-programming-cookbook-review.html">Modern C++ Programming Cookbook Review by Marius Bancila</a></li>
596<li><a href="http://www.cppstories.com/2016/12/async-remote-book-review.html">Async Remote Book</a></li>
597<li><a href="http://www.cppstories.com/2016/07/7-books.html">7 books that taught me how to code</a></li>
598<li><a href="http://www.cppstories.com/2015/08/opengl-superbible-7th.html">OpenGL SuperBible 7th</a></li>
599<li><a href="http://www.cppstories.com/2015/03/soft-skills-book-review.html">Soft Skills - Book Review</a></li>
600<li><a href="http://www.cppstories.com/2014/08/review-of-d-cookbook.html">Review of “D Cookbook”</a></li>
601<li><a href="http://www.cppstories.com/2013/12/the-passionate-programmer.html">The Passionate Programmer</a></li>
602<li><a href="http://www.cppstories.com/2013/08/book-opengl-development-cookbook.html">Book: OpenGL Development Cookbook</a></li>
603<li><a href="http://www.cppstories.com/2013/05/book-c-standard-library-2nd.html">Book: The C++ Standard Library, 2nd</a></li>
604</ul>
605<h2 id="other">
606Other 
607  
608<a class="hash-link" href="#other" aria-hidden="true">
609<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
610    </a>&nbsp;
611    
612</h2>
613
614<ul>
615<li><a href="http://www.cppstories.com/2016/05/coding-without-google.html">Coding without Google</a></li>
616</ul>
617<h2 id="blogging-and-stats">
618Blogging and stats 
619  
620<a class="hash-link" href="#blogging-and-stats" aria-hidden="true">
621<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
622    </a>&nbsp;
623    
624</h2>
625
626<ul>
627<li><a href="http://www.cppstories.com/2016/12/2016-blog-summary.html">2016 Blog Summary</a></li>
628<li><a href="http://www.cppstories.com/2016/07/code-and-graphics-in-mid-2016.html">Code And Graphics in Mid 2016</a></li>
629<li><a href="http://www.cppstories.com/2014/12/code-and-graphics-in-2014.html">Code And Graphics in 2014</a></li>
630</ul>
631
632      </div>
633  </article>
634
635  <aside class="left-panel">
636      
637        Contents
638        <nav id="TableOfContents">
639  <ul>
640    <li><a href="#c">C++</a>
641      <ul>
642        <li><a href="#c26">C++26</a></li>
643        <li><a href="#c23">C++23</a></li>
644        <li><a href="#c20">C++20</a></li>
645        <li><a href="#c17">C++17</a></li>
646        <li><a href="#other-c-articles">Other C++ Articles</a></li>
647        <li><a href="#status">Status</a></li>
648      </ul>
649    </li>
650    <li><a href="#opengl--gpu">OpenGL &amp; GPU</a></li>
651    <li><a href="#performance">Performance</a></li>
652    <li><a href="#projects">Projects</a>
653      <ul>
654        <li><a href="#flexible-particle-system">Flexible Particle System</a></li>
655      </ul>
656    </li>
657    <li><a href="#book-reviews">Book Reviews</a></li>
658    <li><a href="#other">Other</a></li>
659    <li><a href="#blogging-and-stats">Blogging and stats</a></li>
660  </ul>
661</nav>
662      
663    </aside>
664  <aside class="right-panel">
665    <div class="aside-top">
666        <a class="img-link" href="https://www.patreon.com/cppstories" >
667          <img src="/images/joinpatreon_160.png" alt="Join Patreon" width=150px style="border:none"></a>
668          
669        <h4>My Books</h4>
670        <a class="img-link" href="https://leanpub.com/cpp17indetail?utm_source=blog&amp;utm_campaign=adside"> <img src="/images/cpp17_160_side.png" alt="C++17 In Detail" width=150px></a>
671          <br/>
672         <a class="img-link" href="https://leanpub.com/cpplambda"> <img src="/images/lambda_160_side.png" alt="C++ Lambda Story" width=150px></a>
673           <br />
674         <a class="img-link" href="https://leanpub.com/cppinitbook"> <img src="/images/cppinit_160_side.png" alt="C++ Initialization Story" width=150px></a>
675    <h4>Recently Published</h4>
676    
677        <section class="recent-article">
678            <header>
679                <p class="aside-link"><a href="https://www.cppstories.com/2018/05/using-optional/">Using C&#43;&#43;17 std::optional</a></p>
680            </header>
681            <p></p>
682        </section>
683    
684        <section class="recent-article">
685            <header>
686                <p class="aside-link"><a href="https://www.cppstories.com/2026/hardening-experiments/">C&#43;&#43;26: Standard Library Hardening Experiments</a></p>
687            </header>
688            <p></p>
689        </section>
690    
691        <section class="recent-article">
692            <header>
693                <p class="aside-link"><a href="https://www.cppstories.com/2026/semaphore/">Understanding std::counting_semaphore and std::binary_semaphore from C&#43;&#43;20</a></p>
694            </header>
695            <p></p>
696        </section>
697    
698 
699  </aside>
700</main>
701
702      <footer class="footer">
703  <section class="author">
704
705        <p>© 2011-2026, Bartlomiej Filipek<br>
706       
707       Disclaimer: Any opinions expressed herein are in no way representative of those of my employers. All data and information provided on this site is for informational purposes only. I try to write complete and accurate articles, but the web-site will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. <br />
708This site contains ads or referral links, which provide me with a commission. Thank y
708ou for your understanding. <br />
709Built on the <strong><a href="https://gohugo.io/" _target="blank">Hugo</a></strong> Platform!
710
711  </section>
712   
713</footer>
714
715    </div>
716  
716<script src="/js/copy-button.js" defer></script>
716
717  </body>
718</html>
719
720<script>
721 window.addEventListener('hashchange', function(e){
722   e.preventDefault();
723   scrollOptions = {
724    left: 0,
725    top: -30,
726    behavior: 'auto'
727  }
728   window.scrollBy(scrollOptions)
729 });
730
731</script>
vendor: 1 bytes, line 731
731

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.